Я пишу 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комутатор, якщо вам потрібно відповідати більшості імен виконуваних файлів.