Anzeige laufender Prozesse ps [x] Die Prozessverwaltung von Linux sorgt dafür, dass ein MP3-Player Musik macht, während Sie gleichzeitig mit einem Browser das Internet durchforsten. Die Prozesse laufen allerdings nicht wirklich zur selben Zeit, sondern bekommen nacheinander ein bisschen Rechenzeit zur Verfügung gestellt. Die Verteilung dieser Zeit passiert so schnell, dass der Eindruck entsteht, Programme liefen tatsächlich gleichzeitig. Prozesse sind nicht nur hierarchisch geordnet - es gibt, ähnlich wie bei Dateien, eine Rechtebeschränkung. Prozesse "gehören" zunächst einmal einem Anwender, der sie gestartet hat. Lediglich der Administrator ("root") darf Prozesse anderer Anwender oder Systemdienste beenden. Wer was gestartet hat, verrät das Kommando ps. Mit dem Parameter [-x] werden alle eigenen, gerade laufenden Prozesse angezeigt. Die Ausgabe-Liste laufender Prozesse nach der Ausführung des Befehls ps x würde dann etwa so anfangen: | PID | TTY | STAT | TIME | COMMAND | | 500 | tty2 | S | 0:00 | -bash | | ... | ... | ... | ... | ... | | PID | steht für Prozess IDentifier. Diese Nummer ist eindeutig vergeben und wird beispielweise benötigt, um Prozesse gezielt zu beenden. | | TTY | zeigt die Nummer des Terminals oder der virtuellen Konsole an, wo der Prozess gestartet wurde. Die erste Konsole heißt z. B. "dev/tty1". Manche Prozesse, die vom System gestartet werden, sind keiner Konsole zugeordnet und haben daher ein "?" im TTY-Feld. | | STAT | darf mehrere Buchstaben enthalten. "S" steht für "sleeping" (schlafend), "R" für "running" (läuft gerade) und "SW" heißt, dass der Prozess nicht nur schläft, sondern noch in den SWAP-Speicher ausgelagert wurde. Manchmal steht ein Status-Flag ein "Z" in der Liste. Es bedeutet "Zombie" und meint einen Prozess, der zwar beendet ist, seinen Rückgabeschluss aber nicht richtig übergeben konnte. | | TIME | verrät die verbrauchte Rechenzeit. | | COMMAND | gibt den Programmnamen aus. | Wer die Ausgabe etwas ausführlicher haben möchte, verwendet weitere ps-Optionen: [-u] sorgt für zusätzliche Informationen, z. B. Prozesseigentümer oder Rechenzeit/Speicheranteil, [-a] fügt der Liste auch Prozesse anderer Anwender hinzu. Das Kommando ps hat viele weitere Optionen, die bei der Ausgabe verschiedener Informationen helfen. Wer sich vor allen DIngen für "Speicherfresser" interessiert, kann z. B. das Kommando top einsetzen. Dieses Tool verrät Ihnen nicht nur, welcher Prozess gerade am meisten Arbeit verursacht, sondern aktualisiert die Ausgabe ständig und bleibt auf dem neusten Stand. Beispiel: ps x | grep -i konsole - zeigt Prozesse, die in der Spalte "COMMAND" das Wort "konsole" beinhalten (mit dem Parameter -i ignoriert grep Groß- und Kleinschreibung). Die PID steht an der ersten Stelle - anschließend können Sie z.B. mit dem Kommando kill xxxx ("xxxx" steht für PID) den Prozess terminieren (siehe auch unten den Befehl kill). Kind- und Elternprozesse pstree Jeder Prozess kann weitere Prozesse starten und wird dadurch zu einem "Elternprozess" ("parent process"). Der allererste Prozess ist dabei immer "init"; davon ausgehend starten "Kindprozesse" ("child process"), die wiederum weitere Prozesse starten können. Die familiären Beziehungen zwischen den Prozessen verrät das ps-Kommando mit angehängter Option "l" ("display long format"). Im Feld "PPID" wird die Parent Process ID ausgegeben. Übersichtlicher ist die Ausgabe des Kommandos pstree. In einer Baumansicht sehen Sie, welche Prozesse voneinander abhängen. Tipp: Unter KDE gibt es auch ein graphisches Tool ksysguard - Sie können es z.B. über Schnellstart [Alt]+[F2] und den Befehl kdesu ksysguard starten, wenn es installiert ist. Killer-Kommando kill oder killall Wer sich mit Gewalt von einem Prozess trennen möchte, kann das Kommando kill zur Hilfe nehmen. Dieses "schießt Prozesse aber nicht nur einfach ab, es kann stattdessen Signale an Prozesse schicken. Mit kill -l erhalten Sie eine Liste der möglichen Signale. Nicht all diese Signale sind wichtig und kommen häufig zum Einsatz, es lohnt sich aber, ein paar elementare Funktionen auswendig zu lernen. | 19) SIGSTOP | um einen Prozess nicht beenden, sondern kurz zu stoppen, führen Sie den Befehl kill -STOP xxxx ("xxxx" steht für PID des Prozesses) oder kill -19 xxxx. | | 18) SIGCONT | zum Wiederbeleben des Prozesses ist das Kommando kill -18 xxxx vorgesehen. | | 15) SIGTERM | dieser Signal versucht den Prozess "ordentlich" zu beenden. | | 9) SIGKILL | hingegen schießt "kill" mit diesem Signal einen Prozess bedingungslos ab und ist nur in Ausnahmefällen zu empfehlen, weil der Prozess hier keine Möglichkeit erhält, etwaige offene Dateien zu schließen - beim Abschluß mit kill -9 xxxx droht also Datenverlust. | Neben kill steht Ihnen auch killall zur Verfügung: Dieses Tool benötigt keine Prozess-ID, sondern nimmt den Namen einer Anwendung ("COMMAND"-Spalte in der Ausgabe des ps-Kommandos) und schickt Signale an alle Instanzen der Anwendung.
|