Manchmal bemerke ich, dass der Prozess Python
aufgehängt hat. Dann werde ich es über den Aktivitätsmonitor töten und alles ist in Ordnung.
Ich möchte diesen Prozess stattdessen im Terminal beenden. Das PID
nachzuschlagen scheint jedoch unnötig, da es nur einen Prozess mit dem Namen gibt Python
.
Ist es möglich, einen Prozess anhand seines eindeutigen Namens zu beenden?
No matching processes belonging to you were found
sudo killall Python
.sudo
ihn zu verwendenPID
. Warum?sudo
.Wenn Sie kein Sudo sein können, weil es nach einem Passwort fragt und ich glaube, dass Sie das nicht in einem Skript wollen. pkill kommen zur rettung :)
quelle
Sie können Anwendungen beenden, indem Sie Activity Monitor.app als GUI-Lösung verwenden. Das wäre ein einfaches "Force Quit". In manchen Situationen funktioniert das jedoch nicht immer aus unterschiedlichen Gründen!
Die im obigen Kommentar erwähnte Befehlszeilenlösung bietet dem Benutzer viel mehr Optionen.
sudo killall Python
oder wenn es sich um einen laufenden Programmprozess handelt, wirdsudo killall /Applications/Whatever.app
der Prozess auch zum Beenden gezwungen.Sie können auch das Beenden eines Prozesses erzwingen, indem Sie die zugewiesene PID verwenden . Im Fall von Activity Monitor.app wäre es
kill 25794
oderkill -9 25794
Einige weitere Details:
Das Kill-Programm im Terminal erzwingt einfach das Beenden eines Programms, wie per Fernbedienung. (Es funktioniert sogar, wenn Sie von einem entfernten Standort aus SSH auf Ihren Mac ausführen. Folgen Sie dem Befehl kill mit der Prozess-ID-Nummer (kurze PID) des Programms, das Sie beenden möchten.
Sofern Sie nicht auch sudo verwenden, können Sie nur Programme beenden, die Sie "besitzen" - und die unter Ihrem Konto ausgeführt werden. (Das Betriebssystem selbst - root - führt immer eigene Programme aus, und es ist technisch möglich, dass andere Personen, die sich von unterwegs einwählen, auch dann eigene Programme ausführen, wenn Sie den Mac verwenden!)
Die
-9
Flagge ist eine "nicht fangbare, nicht ignorierbare Tötung". Mit anderen Worten, es ist ein industrieller Attentäter, der keine Gnadengesuche von dem Programm akzeptiert, das Sie töten.quelle
Auch wenn es nicht PID verwenden, finde ich das ziemlich effizient sein folgendes:
ps aux | grep "String or name of process"
Diese Zeile gibt eine Vielzahl von Informationen über den / die Abgleichsprozess (e) zurück, und Sie können
kill
oder was auch immer von dort aus.quelle
Basierend auf https://stackoverflow.com/a/22334807/1243763
quelle
pidof
binär als nicht-standard Alias vonps -e -o pid,args | grep -E "\b$1\b" | awk "{print \$1}" | tr '\n' ' '
. Alsopkill -f
macht mehr Sinn.