Wenn ich versuche, Firefox zu starten, wird manchmal angezeigt, dass bereits ein Firefox-Prozess ausgeführt wird. Also muss ich das machen:
jeremy@jeremy-desktop:~$ ps aux | grep firefox
jeremy 7451 25.0 27.4 170536 65680 ? Sl 22:39 1:18 /usr/lib/firefox-3.0.1/firefox
jeremy 7578 0.0 0.3 3004 768 pts/0 S+ 22:44 0:00 grep firefox
jeremy@jeremy-desktop:~$ kill 7451
Was ich möchte, ist ein Befehl, der das alles für mich tun würde. Es würde eine Eingabezeichenfolge und grep
dafür (oder was auch immer) in der Liste der Prozesse benötigen und alle Prozesse in der Ausgabe beenden:
jeremy@jeremy-desktop:~$ killbyname firefox
Ich habe versucht, es in PHP zu tun, aber es exec('ps aux')
scheint nur Prozesse anzuzeigen, mit denen exec()
im PHP-Skript selbst ausgeführt wurde (der einzige Prozess, den es zeigt, ist selbst).
pkill -f "Process name"
Befehl ankündigt ...Antworten:
Weitere Informationen: http://linux.about.com/library/cmd/blcmdl1_pkill.htm
quelle
-f
.pkill -U <username>
ist sehr praktisch. Ich habe einen Solaris -Webserver, den eigentlichen Webserver-Daemon, der als Dienst mit einem eigenen Benutzer eingerichtet ist. Die Angabe durch den Benutzer ist daher eine einfache Möglichkeit, einen Neustart auszulösen.-f
Flag für eine Omnibus-Lösung.Auch möglich zu verwenden:
Für mich hat es perfekt geklappt. Es war das, wonach ich gesucht habe. pkill funktioniert nicht mit Namen ohne Flag.
Wenn
-f
festgelegt, wird die vollständige Befehlszeile für den Mustervergleich verwendet.quelle
-f
Option wirklich notwendig. zBpkill -f "EvilWindowsServer.exe"
-f
Flag hinzufügen, um einen Hintergrundprozess zu beenden, auf dem ein Python-Skript ausgeführt wird.pkill -f -9 PROCESSNAME
Sie können Prozesse mit Namen mit beenden
killall <name>
Aber wenn Sie den Prozess nicht sehen
ps aux
, haben Sie wahrscheinlich nicht das Recht, ihn zu töten ...quelle
killall -s KILL firefox
Eine etwas längere Alternative:
quelle
Am einfachsten ist es, zunächst zu überprüfen, ob Sie die richtigen Prozess-IDs erhalten mit:
Wenn das Ergebnis wie erwartet ist. Geh mit:
quelle
Seltsam, aber ich habe die Lösung so nicht gesehen:
Es kann auch mehrere Prozesse (mehrere Pids) wie:
Ich bevorzuge,
pidof
da es eine einzeilige Ausgabe hat:quelle
kill: invalid number 'pidof myprogram'
. Was ist hier drin schlecht?Beenden Sie alle Prozesse
snippet
im Startpfad. Sie können alle Apps beenden, die aus einem Verzeichnis gestartet wurden, indem Sie / directory / als Snippet einfügen. Dies ist sehr nützlich, wenn Sie mehrere Komponenten für dieselbe Anwendung aus demselben App-Verzeichnis starten.* Ich würde pgrep bevorzugen, wenn verfügbar
quelle
grep
.ps ax | awk '/[s]nippet/ { print $1 }' | xargs kill
[s]
funktioniert, wenn es darum geht, nicht mit dem awk-Prozess selbst übereinzustimmen ?[x]y
mit der Zeichenfolge übereinstimmt,xy
aber nicht umgekehrt. Dies ist eine häufige FAQ. Der Link verweist auf eine Seite von vor mehr als 20 Jahren, auf der dies ausführlicher erläutert wird. und das war schon damals eine wiederkehrende Frage.Auf dem Mac konnte ich weder pgrep noch pkill finden, noch funktionierte killall, also schrieb ich ein einfaches Einzeilenskript: -
Wenn es einen einfacheren Weg gibt, teilen Sie dies bitte mit.
quelle
Mit
#killall
Befehl:quelle
Mit grep töten:
quelle
richtiger wäre:
quelle
export
eine Variable, die Sie im selben Prozess nur einmal verwenden werden?Normalerweise benutze ich den
killall
Befehl.Überprüfen Sie diesen Link für Details dieses Befehls.
quelle
Ich habe mir die gleiche Frage gestellt, aber das Problem mit den aktuellen Antworten ist, dass sie die abzubrechenden Prozesse nicht sicher überprüfen, so dass ... dies zu schrecklichen Fehlern führen kann :) ... insbesondere wenn mehrere Prozesse dem Muster entsprechen .
Als Haftungsausschluss bin ich kein Sh-Profi und es gibt sicherlich Raum für Verbesserungen.
Also habe ich ein kleines sh-Skript geschrieben:
quelle
Wenn Sie GNOME ausführen, können Sie den Systemmonitor (System-> Administration-> Systemmonitor) verwenden, um Prozesse wie unter Windows abzubrechen. KDE wird etwas Ähnliches haben.
quelle
Der Standardbefehl
kill
akzeptiert Befehlsnamen als Alternative zur PID. Siehe kill (1) . Ein häufig auftretendes Problem besteht darin, dass esbash
eigene Namen bereitstellt,kill
die Jobnummern wiekill %1
, aber keine Befehlsnamen akzeptieren . Dies behindert den Standardbefehl. Wenn die erstere Funktionalität für Sie nützlicher ist als die letztere, können Sie diebash
Version durch Aufrufen deaktivierenenable -n kill
Weitere Informationen finden Sie unter
kill
undenable
Einträge in bash (1) .quelle
enable -n kill
?enable kill
kill -9 $ (ps aux | grep -e myprocessname | awk '{print $ 2}')
quelle
quelle
awk oneliner, der den Header der
ps
Ausgabe analysiert , sodass Sie sich nicht um Spaltennummern (sondern um Spaltennamen) kümmern müssen. Unterstützt Regex. Um beispielsweise alle Prozesse abzubrechen, deren ausführbarer Name (ohne Pfad) das Wort "Firefox" enthält, versuchen Sie esquelle