Piszę skrypt bash inotifywait
do monitorowania katalogu i rozpoczynania akcji po wykryciu zmian. Coś jak:
inotifywait -m ... | while read f; do something; done
Ponieważ inotifywait
skrypt 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ć coproc
i 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.
-f
przełącznika, jeśli chcesz dopasować do większej liczby nazw plików wykonywalnych.