…überwachen und steuern.
ps zeigt (eigene) laufende Prozesse an.
Prozesse aller User mit Usernamen in BSD-Syntax (Parameter ohne Minuszeichen):
ps auxw
In Unix-Syntax (Parameter mit Minuszeichen):
ps -auxw
wobei:
Weitere Optionen:
Alle Prozesse vom User "juergen" anzeigen lassen:
ps -fu juergen
Alle Prozesse vom Programm "skype" anzeigen lassen:
ps -C skype
Ausgabe besteht aus mehreren Spalten:
Welche Spalten angezeigt werden sollen, lässt sich mit der Option '-o' festlegen. Zum Beispiel mit:
ps -A -o pid,user,cmd
…lässt sich die Ausgabe auf die o.g. drei Spalten beschränken.
Welche Spalten möglich sind, findet man heraus in den ManPages unter der Überschrift "Standard Format Specifiers".
Die Liste lässt sich mit der Option "–sort" sortiert ausgeben. Mit z.B. "–sort -%cpu" wird die Prozessliste so sortiert, dass die rechenintensivsten Prozesse oben stehen.
Prozessliste als Baum (mit Abhängigkeiten) ausgeben:
ps axjf
Übersichtlichere Ausgabe, aber mit weniger Details:
pstree
Live-Anzeige der gerade laufenden Prozessen (nach CPU-Last sortiert) ruft man mit top auf. Mit [Shift+F] wird der Konfigurationsdialog aufgerufen (mit [Leertaste] Spalten an-/abwählen, mit [S] als Sorierfeld markieren, mit [Q] Dialog beenden).
Das SunOS-Pendant dazu heißt prstat:
prstat -a
Prozess beenden - mit "kill", z.B. den Prozess 1234 beenden:
kill 1234
Der Prozess 1234 erhält dadurch das Signal "SIGTERM" und sollte sich beenden. (Dieses Signal kann durch das Programm selbst behandelt werden.)
Das Kommando "killall" erwartet den Prozessnamen statt die PID. So werden alle laufenden Instanzen von "skype" beendet:
killall skype
Wenn ein Prozess auf "SIGTERM" nicht reagiert, hilft die nächste Stufe - "SIGKILL". Dieses Signal kann vom Prozess nicht behandelt werden und führt zum sofortigen Abbruch des Prozesses (wahrscheinlich auch mit Datenverlust). Hier ein Beispiel:
kill -KILL 1234
Statt "-KILL" darf der numerische Wert des Signall "SIGKILL" (9) genutzt werden:
kill -9 1234
Von dem "top" aus schickt man das "SIGTERM"-Signal mit der Taste [K] mit darauf folgenden Eingabe der PID.
Mit htop (farbige Darstellung) kann man über die Taste [F9] kann man sogar auswählen (mit Kursortasten), welches Signal an den Prozess gesendet wird.
Alle Prozesse eines Users (hier "juergen") rücksichtslos abbrechen (das '='-Zeichen verhindert die Spaltenüberschrift PID):
ps -u juergen -o pid= | xargs sudo kill -9
Einen Prozess im Hintergrund starten. Dafür muss man am Ende der Befehlszeile das '&'-Zeichen setzen:
avconv -i ./original.mkv -c:v libx264 -c:a copy ./umkodiert.mp4 &
Bei dem Aufruf vorangestelltes nohup verhindert, dass beim Schließen des Terminals alle aus diesem Terminal gestarteten Prozesse beendet werden.
Hintergrundprozesse auflisten (ab 1 durchnummeriert):
jobs
Das gleiche, nur mit PIDs:
jobs -l
Hintergrundprozess Nr. 2 (aus der "jobs"-Ausgabe) mit "kill" beenden:
kill %2
Das laufende Programm aus dem Vordergrund in den Hintergrund schicken:
Das zuletzt in den Hintergrund geschicke Programm wieder in den Vordergrund holen:
fg
…oder mit der Angabe (nach dem "fg") der Nummer des Hintergrundprozesses (aus der "jobs"-Liste) einen beliebigen Hintergrundprozess nach Vorne holen:
fg 2
Stand: 30.01.2017
EOF