796 Stimmen

Mit Bash und Regex einen Prozess in einer Zeile finden und beenden

Ich muss oft einen Prozess während der Programmierung beenden.

Ich mache es jetzt so:

[~]$ ps aux | grep 'python csp_build.py'
user    5124  1.0  0.3 214588 13852 pts/4    Sl+  11:19   0:00 python csp_build.py
user    5373  0.0  0.0   8096   960 pts/6    S+   11:20   0:00 grep python csp_build.py
[~]$ kill 5124

Wie kann ich die Prozess-ID automatisch extrahieren und sie in derselben Zeile beenden?

Zum Beispiel so:

[~]$ ps aux | grep 'python csp_build.py' | kill <regex that returns the pid>

3 Stimmen

Glauben Sie mir! :'D Die erste Antwort, die Sie gewählt haben, ist viel komplexer als die Lösung, die Sie in Ihrer Antwort angegeben haben. Ich würde lieber deinen Weg wählen.

0 Stimmen

Die beste Möglichkeit zu prüfen, ob ein Prozess existiert: stackoverflow.com/questions/3043978/

6voto

Serge Punkte 1759

Meine Aufgabe war es, alles zu töten, was mit dem Regexp übereinstimmt und sich in einem bestimmten Verzeichnis befindet (nach Selenium-Tests wurde nicht alles gestoppt). Dies funktionierte für mich:

for i in `ps aux | egrep "firefox|chrome|selenium|opera"|grep "/home/dir1/dir2"|awk '{print $2}'|uniq`; do kill $i; done

5voto

Neil Gatenby Punkte 396

Hier gibt es viele gute Antworten - ich habe die Antwort verwendet, die der Auftraggeber akzeptiert hat. Ich füge nur eine kleine Vorbehaltsnotiz hinzu über pkill y pgrep . Wie Sie vielleicht aus ihre Handbuchseiten Einige Betriebssysteme haben eine 15-Zeichen-Begrenzung für den Prozessnamen. Die -f Option umgeht das bei meinem Betriebssystem, aber ich war in Schwierigkeiten, bis ich diese Option fand!

5voto

l3v1ath4n Punkte 59

So beenden Sie einen Prozess mit dem Schlüsselwort midori zum Beispiel:

kill -SIGTERM $(pgrep -i midori)

4voto

Vijay Punkte 62277
ps -o uid,pid,cmd|awk '{if($1=="username" && $3=="your command") print $2}'|xargs kill -15

3voto

schot Punkte 10358

Eine Methode, die nur awk (und ps ) :

ps aux | awk '$11" "$12 == "python csp_build.py" { system("kill " $2) }'

Durch die Verwendung von String-Gleichheitstests verhindere ich, dass dieser Prozess selbst übereinstimmt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X