Um auf einem Debian GNU/Linux-System die vielen gleichzeitig laufenden
Programme im Zaum halten zu können, muß man sich natürlich auch einen
Überblick über diese verschaffen. Dazu dient unter anderem das Programm
ps. ps liest die benötigten Informationen unter Linux
aus dem Verzeichnis /proc des Dateisystems. /proc ist
nicht tatsächlich auf einer Festplattenpartition abgelegt, sondern wird
vom Kernel ständig aktualisiert und in den Verzeichnisbaum eingeblendet.
Somit hat der Benutzer auf einfachste Art und Weise Zugriff auf die
Informationen.
Rufen Sie ps einfach einmal ohne weitere Parameter in einer
shell auf. Dies sollte Ihnen in etwa folgendes Ergebnis anzeigen:
bash-2.02$ ps
PID TTY TIME CMD
3522 pts/5 00:00:00 bash
3523 pts/5 00:00:00 ps
|
Ohne weitere Optionen zeigt
ps die Prozesse der aktuellen Shell an.
In der ersten Spalte sehen Sie die Prozeß-ID (PID), diese dient dazu, ein
Programm im System eindeutig zu identifizieren.
Zu diesem Zeitpunkt sind das die Shell selber sowie das Programm
ps,
welches ja gerade gestartet wurde.
ps verfügt über eine Vielzahl
von Optionen, mit denen Sie sich detailliertere Informationen zu den laufenden
Programmen ansehen können.
Eine Kurzübersicht über die verfügbaren Optionen erhalten Sie, wie bei allen
GNU-Programmen, über die Option --help.
bash-2.02$ ps --help
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session leader OR by group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g all, even group leaders! -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols
-j,j job control s signal --group --user --sid --rows
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
X registers --heading --no-heading
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m show threads S children in sum -y change -l format
-n,N set namelist file c true command name n numeric WCHAN,UID
-w,w wide output e show environment -H process heirarchy
|
Am häufigsten werden Sie sicher Optionen wie
a, u, x
und w benutzen. Diese werden nach dem
Kommando einfach zusammengefaßt, also
beispielsweise ps auxw.
Nun noch das versprochene Beispiel zum Thema Pipe: Nehmen wir an, Sie benötigen die
Prozeß-ID eines Programms, um es mittels
kill zu beenden. Auf einem
System mit vielen Prozessen kann dies ein Problem sein. Die Lösung ist eine
Kombination aus den Programmen ps
und grep, welche mittels
einer Pipe verkettet werden. Das benötigte Kommando würde wie folgt aussehen:
ps aux|grep netscape.
ps mit den Optionen aux gibt
alle laufenden Prozesse in einer ausführlichen Form aus.
grep filtert
aus der Ausgabe des Programms ps alle Zeilen heraus, in denen die
Zeichenfolge netscape vorkommt. Sie sollten nun eine recht knappe
Ausgabe bekommen und die gewünschte Prozeß-ID leicht finden können.
Weitere Informationen zu ps finden
Sie in der Man-Page zu ps
(man ps).