Estoy escribiendo un script bash para usar inotifywait
para monitorear un directorio y comenzar acciones cuando se detectan cambios. Algo como:
inotifywait -m ... | while read f; do something; done
Como inotifywait
no termina por sí solo, este script no se detendrá.
Entonces, mi plan era obtener el PID del proceso inotifywait, guardarlo en un archivo y hacer que un proceso diferente lo elimine más tarde, digamos como:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
Pero no sé cómo obtener el PID. ¿Hay una manera simple de lograr esto? Otra forma es simplemente guardar el PID del script de shell $$
en el archivo y eliminar todo el script de shell, pero quería hacer un poco de limpieza después del ciclo while.
He intentado usar coproc
y creo que funcionará, pero parece más complicación de la necesaria.
pgrep inotifywait
. Eso le dará el PID, para matar, pkill inotifwait
.
grep -v grep
, en su lugar ps -ef | grep [p]rocessname...
haría lo mismo.
-f
interruptor si necesita hacer coincidir más nombres de ejecutables.