Ich starte ein Programm im Terminal, mit dem ich nicht entkommen kann Ctrl- Cund das ich töten möchte. Wie finde ich die PID?
command-line
process
Jjed
quelle
quelle
Antworten:
Öffnen Sie ein anderes Terminal und führen Sie es aus,
ps ax | grep foo
wobei foo der Name des nicht reagierenden Programms ist. Dies sollte eine Ausgabezeile zurückgeben, die ungefähr so aussieht:Das erste Feld jeder Ausgabezeile ist eine Zahl, die die Prozess-ID des Programms darstellt, zu dem eine Übereinstimmung besteht
grep
(Sie können die letzte ignorieren, die sichgrep
selbst darstellt).kill pid
Gehen Sie wie folgt vor, um den fehlerhaften Prozess anzuhalten : Dabei steht pid für die Prozess-ID des Programms. Sie müssen möglicherweise Ihr Urteil darüber treffen, welche der Übereinstimmungen bearbeitet werden müssenkill
, oder Sie könnentop
stattdessen verwenden. Die Verwendungkill
von selbst sendet SIGTERM, das Sie zuerst versuchen sollten, da es dem Programm ermöglicht, ordnungsgemäß nach sich aufzuräumen. Wenn SIGTERM fehlschlägt, versuchen SIGHUP, die stonger Medizin ist:kill -HUP pid
. Wenn alles andere fehlschlägt, senden Sie SIGKILL. Sie sollten dies jedoch nur als letzten Ausweg tun, da SIGKILL den Kernel dazu veranlasst, den Prozess sofort abzubrechen, ohne dass eine Bereinigung möglich ist. Dies kann manchmal zu Datenbeschädigungen oder anderen Problemen führen. Senden Sie SIGKILL also nur als letzten Ausweg. Um dies zu tun, tuekill -KILL pid
oderkill -9 pid
.Wenn Sie eine grafische Benutzeroberfläche verwenden, müssen Sie sich natürlich nicht mit diesem verrückten Befehlszeilen-Zeugs herumschlagen, um die Arbeit zu erledigen. Öffnen Sie einfach "System Monitor", navigieren Sie zur Registerkarte "Prozesse", wählen Sie den Prozess aus, den Sie anhalten möchten (Hm, könnte dies der Prozess mit 90% CPU sein?), Und klicken Sie mit der rechten Maustaste darauf. Da der Prozess bereits gestoppt ist (das ist das Problem, oder?), Wählen Sie im daraufhin angezeigten Menü Prozess beenden oder Prozess beenden.
quelle
kill -9
ist schlechter Rat. Ich habe die Antwort bearbeitet, um sie zu korrigieren.ping
Befehl und enthältsleep
. Laut unix.stackexchange.com/a/275826/72988 ist dies in Ubuntu ohne nicht möglichmultiplexer
.Ich glaube nicht, dass so lange Befehle erforderlich sind, wenn Sie dieselben Befehle mit pgrep, pkill, pidof usw. ausführen können.
pgrep:
BESCHREIBUNG: pgrep durchsucht die aktuell ausgeführten Prozesse und listet die Prozess-IDs auf, die den Auswahlkriterien für stdout entsprechen. Alle Kriterien müssen übereinstimmen. Zum Beispiel,
Um einen Prozess namens sshd zu finden, der root gehört.
Listen Sie die Prozesse auf, die dem Root-OR-Daemon gehören.
pidof:
BESCHREIBUNG :
Pidof findet die Prozess-IDs (Pids) der genannten Programme. Diese IDs werden auf der Standardausgabe gedruckt.
Syntax: pidof Programmname
Um ein Programm mit pid zu beenden, verwenden Sie das Beispiel pkill:
-f
flag: Durchsucht das Flag process_name (siehe man pkill)-o
: Wählen Sie nur den ältesten der übereinstimmenden Prozesse aus.-n
flag: Wählen Sie nur den neuesten der übereinstimmenden Prozesse aus.-l
flag: Listet den Prozessnamen sowie die Prozess-ID auf.quelle
Der einfachste Weg, die PID eines laufenden Programms zu ermitteln, ist:
Zum Beispiel, wenn Sie vim gestartet haben und dessen pid wissen wollen:
Denken Sie daran, dass Sie den genauen Programmnamen angeben müssen, der gestartet wurde.
Wenn Sie beispielsweise vi ausführen und ausführen, erhalten
pidof vim
Sie keine korrekten Ergebnisse.pidof
Weitere Informationen finden Sie in der Bedienungsanleitung.quelle
pidof mysqld
gibt eine PID zurück. Wenn ich jedochpidof Mariadb
nichts eingebe, wird nichts zurückgegeben. Ist es die gleiche PID für MariaDB und MySQL?Ich habe festgestellt, dass es nützlich ist, bei der Suche nach Groß- und Kleinschreibung das "-i" einzufügen und "aux" anstelle von "ax" zu verwenden, um eine aussagekräftigere Ausgabe zu erhalten:
Wenn Sie alle Prozesse beenden möchten, die Sie verwenden können:
Das ist eine gewaltsame Tötung. Lass die "-9" fallen, wenn du einen Soft Kill willst.
quelle
ps aux | grep -i firefox...
Prozess ab, da dieser den Textfirefox
in seinem Befehl enthält!grep -i firefo[x]
, um nur Firefox entsprechen-9
mitkill
, siehe hier für ErklärungenWenn Sie nur die PID wollen (nützlich für Autokill-Skripte, etc ...)
quelle
Für diejenigen , Ubuntu 16.04 LTS läuft, Sie müssen verwenden
ps ax
und nicht nurps
in der Befehlszeile, sonst werden Sie nur die Prozesse erhalten aus dem jeweiligen Endgerät Instanz Laichen , die Sie in. ( In der Regel nur ‚bash‘ [die Shell Sie sind in ] und 'ps' [was du gerade gelaufen bist])quelle
ps -e
(zeigt alles) undps -ejH
(zeigt einen Prozessbaum).Sie können auch ein anderes Terminal öffnen (oder zu einem anderen Terminal wechseln) und ausführen. Dies
top
ist im Grunde eine Textversion des Systemmonitors. In der ersten Spalte wird die PID jedes laufenden Prozesses aufgeführt. Sie können diese beenden, indem Sie drücken K, die PID eingeben und dann ein zu sendendes numerisches Signal eingeben.quelle
Du könntest es tun:
Die ersten beiden Pipes erhalten Prozessinformationen. Als Nächstes versuchen wir, die PID-Spalte mithilfe des Old-School-Schnitts zu ermitteln. Anschließend geben wir die resultierende PID zum Töten an.
quelle
kill -9
ist die größte Waffe, die Sie einen Prozess töten müssen. Sie sollten zunächst ein sanfteres Signal versuchen, bevor Sie auf SIGKILL zurückgreifen, um dem Prozess die Möglichkeit zu geben, seine Ressourcen zu bereinigen.oder
liste alle pid mit dem entsprechenden prozess auf
quelle