Estou escrevendo um script bash inotifywait
para monitorar um diretório e iniciar ações quando alterações são detectadas. Algo como:
inotifywait -m ... | while read f; do something; done
Como inotifywait
não termina sozinho, esse script não será interrompido.
Portanto, meu plano era obter o PID do processo inotifywait, salvá-lo em um arquivo e fazer com que um processo diferente o matasse posteriormente, digamos:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
Mas não sei como obter o PID. Existe uma maneira simples de conseguir isso? Outra maneira é salvar o PID do script de shell $$
no arquivo e matar o script de shell inteiro, mas eu queria fazer uma limpeza após o loop while.
Eu tentei usar coproc
e acho que vai funcionar, mas parece mais complicação do que o necessário.
pgrep inotifywait
. Isso lhe dará o PID, para matar pkill inotifwait
,.
grep -v grep
, mas ps -ef | grep [p]rocessname...
faria o mesmo.
-f
opção se precisar comparar com mais nomes dos executáveis.