Linux-Mandrake: |
Benutzerhandbuch |
und Referenz |
MandrakeSoft
Januar 2000 http://www.linux-mandrake.com
In einem früheren Kapitel wurde bereits erwähnt, dass es möglich ist, Prozesse zu überwachen. Dieses Kapitel soll Sie damit vertraut machen. Um die Aktionen die wir durchführen wollen zu verstehen, ist es sinnvoll, etwas mehr über Prozesse zu wissen.
Ebenso wie das Dateisystem sind unter Linux auch die Prozesse in einer hierachischen Baumstruktur angeordnet. Jeder Prozess hat eine Nummer, die sog. PID (Process ID, engl. für ,,Prozess-Identifikationsnummer''). Er kennt auch die Nummer des Prozesses, der ihn erzeut hat, also seines Vaters. Diese Nummer wird PPID (Parent Process ID, engl. für ,,Eltern Prozess-Identifikationsnummer'') genannt.
Der Prozess mit der Nummer 1 hat den Namen init
(siehe
Referenz). Er ist für die Prozesshierarchie das, was
die Verzeichnisbaumwurzel ,,/'' für das Dateisystem ist.
Im nächsten Abschnitt werden die beiden Kommandos ps
und
pstree
erläutert, die es Ihnen ermöglichen Informationen
über die laufenden Prozesse zu bekommen.
Unter Unix gibt es 31 verschiedene Signale. Auf 29 davon kann
ein Prozess reagieren, er kann jedoch auch darauf verzichten. Bei den
anderen beiden hat er keine Wahl: Signal Nummer 9 (KILL
) und
Signal Nummer 19 (STOP
).
Signal 9 beendet einen Prozess unwiederruflich, ohne ihm die Zeit zu
geben, sich korrekt zu beenden. Mit diesem Signal können Sie Prozesse
aus dem System entfernen, die sich nicht ,,sauber'' beenden
lassen. Eine komplette Liste aller Signale erhalten Sie mit dem Befehl
kill -l
.
ps
und pstree
Diese beiden Programme geben eine Liste aktuell laufender Prozesse ahand der von Ihnen gewählten Kriterien aus.
ps
Wenn sie diesen Befehl ohne Parameter ausführen, erhalten Sie nur eine Liste der Prozesse, die Ihrem aktuellen Benutzerkennzeichen zugeordnet sind und im aktuellen Terminal gestartet wurden:
$ ps
PID TTY TIME CMD
5162 ttya1 00:00:00 zsh
7452 ttya1 00:00:00 ps
Wir werden uns aus der großen Parameteranzahl die bekanntesten ansehen:
a
: Zeige auch Prozesse anderer Benutzer an;
x
: Zeige auch Prozesse ohne Kontroll-Terminal an (dies
betrifft quasi alle Server);
u
: Zeige für jeden Prozess das Benutzerkennzeichen des
Eigentümers sowie den Startzeitpunkt.Es gibt etliche weitere Parameter. Details sind im Handbuchauszug
ps(1)
zu finden.
Die Ausgabe dieses Kommandos besteht aus unterschiedlichen Feldern:
das interessanteste ist PID
, die
Prozess-Identifikationsnummer.
Das Feld CMD
enthält den Namen des ausgeführten Prozesses.
Eine gängige Methode, den Befehl ps
aufzurufen ist die
Folgende:
$ ps ax | less
Sie erhalten damit eine Liste aller aktuell laufenden Prozesse.
Sie können darin den oder die Prozesse suchen, die Probleme bereiten,
um sie anschließend mit dem kill
-Befehl zu beenden.
pstree
Der Befehl pstree
zeigt die Prozesse in Form einer
Baumstruktur an. Einer der Vorteile ist, dass sie sofort die
Abstammungs-Hierarchie eines Prozesses vor Augen haben: Wenn Sie eine
Reihe von Prozessen beenden wollen, die alle Kinder eines
Vaterprozesses sind, genügt es, den Vater zu beenden. Der Parameter
-p
, zeigt Ihenen die PID eines jeden Prozesses mit an.
Durch Hinzunahme von -u
wird bei jedem Wechsel der
Eigentumsverhältnisse das entsprechende Benutzerkennzeichen mit
angegeben. Da die Liste meistens recht lang ist, sollten Sie
pstree
in folgender Weise aufrufen:
$ pstree -up | less
Sie erhalten damit eine Übersicht über den gesamten Prozessbaum.
kill
,killall
und top
xkill
Falls Sie KDE, als Arbeitsoberfläche verwenden, gibt es einen
schnellen Weg, blockierte X-Prozesse zu beenden.
In Abbildung 9.1 sehen Sie das Symbol des Programms
xkill
.
xkill
-SymbolSie starten das Programm entweder durch einen Klick mit der linken
Maustaste oder von einer Kommandozeile aus. Solange xkill
aktiv ist ändert sich der Mauszeiger. Der Prozess wird beendet, wenn
Sie einen Linksklick auf einem Fenster des Programms, ausführen.
kill
, killall
Mit Hilfe dieser beiden Befehle können Sie Signale an Prozesse
schicken. kill
benötigt die PID, wohingegen
killall
den Kommandonamen des entsprechenden Prozesses
braucht.
Beiden Befehlen kann optional eine Signalnummer als Parameter übergeben
werden. Standardmäßig schicken Sie beide das Signal 15 (TERM
) an
die jeweiligen Prozesse. Wenn sie etwa den Prozess mit der PID 785
beenden wollen, geben Sie Folgendes ein:
$ kill 785
Falls Sie das Siganal 9 schicken wollen, geben Sie Folgendes ein:
$ kill -9 785
Angenommen Sie wollen einen Prozess beenden, von dem Sie nur den
Programmnamen kennen. Statt mittels ps
die PID zu
ermitteln, können Sie auch direkt den Prozess beenden:
$ killall -9 netscape
Solange Sie nicht unter dem privilegierten Benutzerkennzeichen
root
angemeldet sind, können Sie mit diesen Befehlen nur Ihre
eigenen Prozesse beeinflussen. Sie brauchen daher keine Angst zu haben
dass andere Anwender betroffen werden, wenn diese Programme mit dem
selben Namen laufen haben.
top
Der Befehl top
stellt ein universelles Werkzeug für die
Bearbeitung von Prozessen dar. Sie haben damit sowohl den
Funktionsumfang von ps
, als auch von kill
abgedekt. Da es sich dabei um ein Kommandozeilenprogramm handelt,
müssen sie es in einem Terminal starten, wie in Abbildung 9.2
zu sehen.
top
Das Programm ist vollständig tastaturgesteuert. Durch Drücken
der Taste ,h`
erhalten Sie eine kurze Hilfe. Hier eine Auswahl der
verwendbaren Tastaturküzel:
,k`
: Dieser Befehl dient zum Übermitteln von Signalen an
Prozesse. top
fragt Sie dann nach der PID und der
Signalnummer (Standartwert: 15);
,M`
: Dieser Befehl ordnet die Prozesse nach der Menge des
benötigten Speicherplatzes (Spalte %MEM
);
,P`
: Dieser Befehl ordnet die Prozesse nach der benötigten
CPU-Zeit (Spalte %CPU
; Standardeinstellung);
,u`
: Dieser Befehl zeigt nur alle Prozesse eines Benutzers
an. top
fragt Sie nach dem Benutzerkennzeichen, nicht der
UID. Falls Sie keinen Namen angeben, werden alle Prozesse angezeigt;
,i`
: Dieser Befehl arbeitet wie ein Kippschalter.
Standardmäßig werden alle Prozesse - also auch schlafende - angezeigt,
nach Drücken der Taste ,i`
werden nur noch aktuell arbeitende
(Prozesse, deren STAT
-Feld ein R
(Running, engl.
für ,,am Laufen'')) Prozesse angezeigt. Durch erneutes
Betätigen der Taste wird in den Standardmodus zurückgeschaltet.