macOS-Terminal – Das kleine Einmaleins der Kommandozeile
Seite 5: Programme beenden auf Kommando
Wenn ein Programm hängt, hat man im Finder nur wenige Möglichkeiten. Man kann versuchen, die störende Anwendung normal über cmd+q
zu schließen oder die "Programme sofort beenden"-Funktion (cmd+alt+esc
) bemühen. Doch selbst dieses "gewaltsame Abschießen" funktioniert nicht immer. Im Terminal geht das besser. Eine Liste aller laufenden Programme liefert das Kommando ps
(process status). Ohne weitere Parameter liefert es nur die zum aktuellen Shell-Fenster gehörenden Prozesse des Anwenders auf. ps a
listet auch die in anderen Shell-Instanzen gestarteten Anwendungen. Falls Ihnen die Bedeutung eines Prozesses unklar ist, hilft möglicherweise unsere Liste mit Systemprozessen.
Alle Prozesse samt Parameter bekommt man erst mit ps auxww
zu sehen. Dieses Kommando zeigt alle aktiven Prozesse auf dem Rechner an, auch solche, die nur im Hintergrund laufen, sowie Systemdienste wie Apples Crash Reporter oder den iCloudHelper, der den Abgleich mit der Wolke organisiert.
In der Liste findet man sowohl den Anwender, der den Prozess gestartet hat, als auch die Prozess-ID, Informationen über den Speicherverbrauch und die CPU-Belastung. Da die Liste meist etwas unübersichtlich ausfällt, kann man sich wie oben beschrieben mit dem grep
-Kommando behelfen, um das hängende Programm zu finden:
ps auxww | grep Pages
So bekommt man schnell die ID des Prozesses heraus, mit der man den kill-Befehl füttern kann. Wie sein Name schon vermuten lässt, beendet der einen Prozess, zunächst durch eine freundliche Aufforderung, die Arbeit einzustellen. Sollte das nicht helfen, hilft die Option -9
weiter.
Sie eliminiert den Prozess ohne Wenn und Aber – aber auch ohne die Chance, vorher seine Dokumente zu speichern. Der Befehl killall
macht im Prinzip das Gleiche, erwartet aber einen Programmnamen statt einer Prozess-ID, also etwa
killall Safari
Auch killall
gibt sich erst freundlich und sendet ein Terminierungs-Signal. Will man energischer vorgehen, lautet die Option etwas länglicher -SIGKILL
, alles groß geschrieben. Mit der Option -d
führt man einen Trockenlauf durch:
killall -d -SIGKILL Safari
So listet der Befehl zunächst, welchen Prozessen er welches Signal schickt, versendet diese aber noch nicht. Erst wenn man den Befehl erneut und ohne die Option -d
aufruft, passiert wirklich etwas.
kill
und killall
können aber noch mehr: Sie frieren ein Programm auf Wunsch ein, halten es also bis auf Weiteres an, sodass es die CPU nicht weiter belastet. Das ist beispielsweise praktisch, wenn man mittels iTunes eine Datei in ein anderes Format wandelt und kurzfristig die volle CPU-Leistung für eine andere Aufgabe benötigt. Die beiden Kommandos
killall -STOP iTunes
kill -STOP 57084
bewirken das Gleiche: Die Musik stoppt und iTunes reagiert auf keinerlei Kommandos mehr. Erst nach dem Auftauen über die Option -CONT
läuft alles weiter, als wäre nichts gewesen.