Frage Shell-Skript auf -9 kill basierend auf dem Namen


Gibt es einen Weg (vielleicht ein Skript), wie man diesen Prozess automatisiert:

petr@sova:~$ ps -ef | grep middleman
petr     18445  2312  1 12:06 pts/2    00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman                                                                  
petr     18581 13621  0 12:08 pts/0    00:00:00 grep --color=auto middleman
petr@sova:~$ kill -9 18445

Unglücklicherweise, pkill ist zu schwach, als ich gehen muss -9 Option auf kill.


26
2018-01-11 11:10


Ursprung


Sie können verwenden -9 mit pkill auch... - OrangeDog
Meiner Meinung nach ist es eleganter und richtiger zu verwenden -KILL als -9. Welche Nummer welchem ​​Signal entspricht, ist implementierungsabhängig. SIGKILL ist zufälligerweise 9 auf Linux i386 und Linux amd64, aber nicht unbedingt überall. (Mehr Infos hier.) - Eliah Kagan
@EliahKagan: während ich gerne benutze -KILL Auch (weil es Code lesbarer macht), sollte es beachtet werden, dass SIGKILL = 9 ist angegeben von POSIX, damit -9 ist heutzutage ziemlich portabel (und hängt nicht von Kernen oder Architekturen ab). - Andrea Corbellini


Antworten:


Sie können Ihre Shell verwenden, um diese Aufgabe für Sie zu erledigen:

kill -9 $(pidof middleman)

Die Shell führt den Befehl aus pidof middleman zuerst. Die Ausgabe von pidof (8) ist die Prozess-ID. Also ersetzt die Schale die pidof-Befehl mit der Prozess-ID und wird ausgeführt kill -9 18845 (oder was auch immer die richtige Prozess-ID ist).


35
2018-01-11 11:19



Was ist der Unterschied zwischen und? kill -9 $(pgrep middleman)? - Aaron Franke


Es gibt eine noch einfachere Lösung als die von qbi: killall Lassen Sie uns Prozesse mit Namen beenden, und Sie können Signale angeben.

killall -9 middleman

Sehen man killall Für weitere Informationen und zusätzliche Optionen (es gibt einige).

Wie der Name schon sagt, sendet dies das Signal an alle Prozesse benannt middleman. Aber das ist nicht anders als andere Wege (wie pkill). Außerdem, pkill -9 middleman wird auf Prozesse abzielen, deren Name übereinstimmt, aber nicht gleich ist middleman, sowie middleman2, auch.


53
2018-01-11 12:23



killall für den Sieg! - Andrea Corbellini
alle Zwischenhändler töten? Ach je... - Tobias Kienzler


Die anderen Antworten sind völlig korrekt, aber ich könnte auch eine dritte Option hinzufügen, so dass alle hier dokumentiert sind. Sie können auch verwenden:

pkill -9 middleman

Sehen man pkill für weitere Informationen und zusätzliche Optionen.

Es spielt keine Rolle, welche dieser Methoden Sie verwenden. Sie werden alle arbeiten. Aber die Optionen kennen, wenn nützlich, wenn Sie das Verhalten in irgendeiner Weise ändern möchten, da die entsprechenden man-Seiten zeigen, welche anderen passenden Optionen verfügbar sind.


16
2018-01-11 13:48



Seltsam, funktioniert hier nicht. Noch nicht middleman* - mreq
Ah. Wenn man genauer hinsieht, scheint es wahrscheinlich, dass Sie einen Rubin-Interpreter töten wollen, anstatt einen Prozess, der wirklich genannt wird middleman. Dies ist, wo die Unterschiede in wie genau pkill, killall, pidof und grep Match-Prozesse fangen wirklich an zu spielen! - Robie Basak


pkill -9 -f middleman

Das -f Diese Option entspricht der vollständigen Befehlszeile und nicht nur dem Prozessnamen.

Beachten Sie, dass -9 sollte ein letzter Ausweg Signal, nicht etwas routinemäßig zu verwenden.


12
2018-01-11 22:12



Vielen Dank! Ich mag die Fähigkeit, die complete command line - cwd
Komplette Befehlszeile ist wirklich cool! - okwap


Nur zum Spaß möchte ich eine manuelle, alte Schule hinzufügen

kill -9 `ps aux | grep middleman | awk '{print $2}'`

10
2018-01-11 17:39



Ich habe das vor ein paar Jahren bei der Arbeit gemacht und der Admin gab mir einen Blick, der "okay, Opa" sagte. Es kann auch ein grep -v grep vor dem awk hinzugefügt werden, um sicherzustellen, dass auch der grep-Befehl nicht beendet wird. - Iain Holder
@gerhard, danke für den Schnitt, konnte die hinteren Ticks auf meinem iPad nicht finden. grep -v ist eine gute Idee ... - slipset
Der wirkliche alte Schulweg wäre zu schreiben ... grep [m]iddleman ... um zu vermeiden, das zu töten grep Prozess durch Zufall. Auf diese Weise kann der Grep nicht mit sich selbst übereinstimmen. - Mikko Rantalainen


killall -9 -ir regex_pattern

Das ist interaktiv (sicher) und entspricht dem Namen des Teilbefehls.


1
2018-05-28 02:54