macOS-Terminal – Das kleine Einmaleins der Kommandozeile

Seite 5: Programme beenden auf Kommando

Inhaltsverzeichnis

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.

Die Informationen der Aktivitätsanzeige im Finder kann man sich mit dem Befehl top auch im Terminal anzeigen lassen. Das ist zwar weniger hübsch, funktioniert dafür aber auch über eine dünne Netzwerkleitung sehr gut.

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.