Я пишу bash-скрипт, який слід використовувати inotifywait
для моніторингу каталогу та запуску дій, коли виявляються зміни. Щось на зразок:
inotifywait -m ... | while read f; do something; done
Оскільки inotifywait
цей сценарій не закінчується сам по собі, цей сценарій не зупиниться.
Тож мій план полягав у тому, щоб отримати PID процесу inotifywait, зберегти його у файл та іншим процесом вбити його пізніше, скажімо так:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
Але я не знаю, як отримати PID. Чи є простий спосіб цього досягти? Інший спосіб просто зберегти PID оболонки-скрипта $$
в файл і вбити всю оболонку-скрипт , але я хотів би зробити деякі очищення після циклу While.
Я намагався використовувати, coproc
і я думаю, що це спрацює, але це здається більш складним, ніж необхідним.
pgrep inotifywait
. Це дасть вам PID, щоб убити pkill inotifwait
.
grep -v grep
, замість ps -ef | grep [p]rocessname...
цього зробите те саме.
-f
комутатор, якщо вам потрібно відповідати більшості імен виконуваних файлів.