Ich schreibe ein Bash-Skript, mit inotifywait
dem ich ein Verzeichnis überwachen und Aktionen starten kann, wenn Änderungen erkannt werden. Etwas wie:
inotifywait -m ... | while read f; do something; done
Da inotifywait
dieses Skript nicht von selbst beendet wird, wird es nicht angehalten.
Mein Plan war es also, die PID des inotifywait-Prozesses zu erhalten, sie in einer Datei zu speichern und sie später von einem anderen Prozess beenden zu lassen.
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
Aber ich weiß nicht, wie ich die PID bekommen soll. Gibt es einen einfachen Weg, dies zu erreichen? Eine andere Möglichkeit besteht darin, die PID des Shell-Skripts $$
in der Datei zu speichern und das gesamte Shell-Skript zu beenden, aber ich wollte nach der while-Schleife eine Bereinigung durchführen.
Ich habe versucht, es zu verwenden, coproc
und ich denke, es wird funktionieren, aber es scheint komplizierter als nötig zu sein.
pgrep inotifywait
. Das gibt dir die PID, um zu töten , pkill inotifwait
.
grep -v grep
, sondern ps -ef | grep [p]rocessname...
würden das gleiche tun.
-f
Schalter verwenden, wenn Sie mit mehr Namen der ausführbaren Dateien übereinstimmen müssen.