Piszę skrypt bash inotifywaitdo monitorowania katalogu i rozpoczynania akcji po wykryciu zmian. Coś jak:
inotifywait -m ... | while read f; do something; done
Ponieważ inotifywaitskrypt nie zakończy się sam, skrypt nie zostanie zatrzymany.
Tak więc moim planem było uzyskanie PID procesu inotifywait, zapisanie go do pliku i inny proces zabił go później, powiedzmy:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
Ale nie wiem, jak uzyskać PID. Czy istnieje prosty sposób na osiągnięcie tego? Innym sposobem jest po prostu zapisanie PID skryptu powłoki $$w pliku i zabicie całego skryptu powłoki, ale chciałem trochę wyczyścić po pętli while.
Próbowałem używać coproci myślę, że to zadziała, ale wydaje się, że jest to bardziej skomplikowane niż to konieczne.
pgrep inotifywait. Który daje PID, aby zabić pkill inotifwait.
grep -v grep, zamiast tego ps -ef | grep [p]rocessname...zrobiłbyś to samo.
-fprzełącznika, jeśli chcesz dopasować do większej liczby nazw plików wykonywalnych.