Wie kann ich einen bestimmten Find-Befehl beenden?

Wie kann ich einen bestimmten Find-Befehl beenden?

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

pgrepSie 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 pkillfolgendermaßen verwenden:

pkill -x "find / -iname png"

-xbedeutet: 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 scriptes verwenden, um es zu finden. Übergeben Sie dann die Ausgabe an , um pstreeeine 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

verwandte Informationen