Я пишу сценарий bash, чтобы использовать его inotifywait
для мониторинга каталога и запуска действий при обнаружении изменений. Что-то типа:
inotifywait -m ... | while read f; do something; done
Так inotifywait
как сам по себе не завершается, этот скрипт не остановится.
Поэтому я планировал получить PID процесса inotifywait, сохранить его в файл, а потом уничтожить другим процессом, например:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
Но я не знаю, как получить PID. Есть ли простой способ добиться этого? Другой способ - просто сохранить PID shell-скрипта $$
в файл и убить весь shell-скрипт, но я хотел сделать некоторую очистку после цикла while.
Я пытался использовать, coproc
и я думаю, что это будет работать, но это кажется более сложным, чем необходимо.
pgrep inotifywait
. Это даст вам PID, чтобы убить pkill inotifwait
.
grep -v grep
, вместо этого ps -ef | grep [p]rocessname...
будет делать то же самое.
-f
переключатель, если вам нужно сопоставить больше имени исполняемого файла.