
Der spezielle Suchbefehl, den ich beenden möchte, wird in einem vom Benutzer erstellten Skript ausgeführt?
Ich habe ein Skript erstellt, das einen Suchbefehl enthält, der bis zu 10 Minuten lang ausgeführt wird. Bevor ich dasselbe Skript erneut ausführe, muss dieser Suchbefehl beendet werden.
Antwort1
pgrep
pgrep
Sie können mit dem Schalter Folgendes verwenden -a
:
pgrep -a find
Sie erhalten eine vollständige Befehlszeile sowie die Prozess-ID:
10838 find / -iname png
10839 find / -iname jpg
dann können Sie entscheiden, ob Sie diesen töten möchten oder nicht:
kill 10838
wird das PNG zerstören.
pkill
Sie können es auch pkill
folgendermaßen verwenden:
pkill -x "find / -iname png"
-x
bedeutet: Nur Prozesse abgleichen, deren Namen.
Untergeordneten Prozess suchen:
Verwenden Sie Tree, um den gewünschten Prozess zu finden. Angenommen, Ihr Skriptname lautet „script.sh“. Sie können pgrep -f script
es verwenden, um es zu finden. Übergeben Sie dann die Ausgabe an , um pstree
eine Liste seiner untergeordneten Prozesse zu erhalten, und beenden Sie den Find-Prozess, der das untergeordnete Element Ihres Skripts ist.
$ pstree -p $(pgrep -f script)
bash(10915)───find(10916)
$ kill 10916