%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Bilder
\usepackage{graphicx}
\usepackage{graphics}

%Kopfzeile
\ihead{Linux}
\chead{}
\ohead{http://kohnlehome.de/linux/prozessverwaltung.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
Linux-Prozessverwaltung
\end{center}


\section{Prozess}
\begin{itemize}
\item Ein Prozess ist ein Programm in Ausführung
\item \textbf{Eigenschaften eines Prozesses:} PID (Prozessnummer), PPID (ID des Elternprozesses), Benutzer, Gruppen, aktuelles Verzeichnis, ...
\item Der erste vom Kernel gestartete Prozess (PID=1, PPID=0) kommt vom Programm /sbin/init.
\end{itemize}

\section{Befehle zur Prozessverwaltung}
\begin{tabular}[t]{l l}
\texttt{ps} & alle auf dem Terminal laufenden Prozesse anzeigen\\
\texttt{ps -ax} & alle Prozesse auch ohne Terminal anzeigen\\
\\
\texttt{pstree} & Baumstruktur\\
\texttt{pstree -p} & Baumstruktur mit Prozess-ID anzeigen\\
\texttt{pstree -u} & Baumstruktur mit Besitzerwechsel anzeigen\\
\\
\texttt{top} & sich ständig aktualisierende Prozesstabelle\\
\texttt{htop} & top in bunt\\
\\
\texttt{kill PID} & Prozess beenden\\
\texttt{kill \%jobnummer} & Prozess beenden\\
\texttt{killall Programmname} & alle Prozesse mit dem Programmnamen beenden\\
\end{tabular}


\section{Allgemeine Prozesszustände}
\begin{minipage}[hbt]{7.5cm}
	
	\includegraphics[scale=0.6]{prozesszustand-allgemein.png}
	
\end{minipage}
\begin{minipage}[hbt]{9.3cm}
	
\begin{itemize}
\item R (runnable):\\ Prozess kann Rechenzeit zugewiesen bekommen
\item S (sleeping):\\ auf Ereignis (z.B. Eingabe) wartend
\item D (uninterruptible sleep):\\ auf Ereignis (z.B. Eingabe) wartend,\\kann nicht gestoppt werden
\item T (stopped):\\ vorübergehend angehalten,\\ kann später weiterlaufen
\item Z (zombie):\\ beendet, aber Rückgabewert\\wurde vom Elternprozess noch nicht abgeholt
\end{itemize}
	
\end{minipage}

\newpage
\section{Das /proc - Verzeichnis}
Jeder Prozess erhält ein Verzeichnis in /proc/ mit seiner PID als Namen
\begin{verbatim}
/proc/
   |- PID/
   |     |- cmdline          Befehl
   |     |- cwd              Link zum Arbeitsverzeichnis
   |     |- exe              Link zum Programm
   |     |- status           Statusinformationen
   |
   |- meminfo
   |- cpuinfo
\end{verbatim}



\section{Vorder- und Hintergrundprozesse}
\subsection{Zustände}
{\includegraphics[scale=0.6]{prozess-vordergrund-hintergrund.png}}
\subsection{Befehle}
\begin{tabular}[t]{l l}
\texttt{Kommando \&} & Kommando im Hintergrund ausführen\\
\texttt{STRG + Z} & Aktuellen Prozess in Hintergrund und stoppen\\
\texttt{bg} & Angehaltenen Prozess im Hintergund weiterlaufen lassen\\
\texttt{fg} & Angehaltenen oder Hintergrundprozess wieder in den Vordergrund\\
\texttt{jobs} & Benutzerhintergrundprozesse (jobs) anzeigen\\
\end{tabular}
\section{Prozesspriorität}
\subsection{nice-Wert}
-20, ..., -1, 0, 1, ..., 19\\
-20: höchste Priorität (überhaupt nicht "nett")\\
-20, ..., -1: nur root\\
0: Standard\\
1, ..., 19: alle Benutzer\\
19: niedrigste Priorität (ausgesprochen "nett")

\subsection{Anzeige}
\texttt{ps -l}

\subsection{Programm mit anderer Priorität starten}
\texttt{nice -n PRIORITÄT KOMMANDO}\\
\texttt{nice -PRIORITÄT KOMMANDO}

\subsection{Priorität laufender Prozesse ändern}
\texttt{renice PRIORITÄT -p PID}

\end{document}
