Ich schreibe ein Bash-Skript, mit inotifywaitdem ich ein Verzeichnis überwachen und Aktionen starten kann, wenn Änderungen erkannt werden. Etwas wie:
inotifywait -m ... | while read f; do something; done
Da inotifywaitdieses 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, coprocund 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.
-fSchalter verwenden, wenn Sie mit mehr Namen der ausführbaren Dateien übereinstimmen müssen.