J'écris un script bash à utiliser inotifywait
pour surveiller un répertoire et lancer des actions lorsque des changements sont détectés. Quelque chose comme:
inotifywait -m ... | while read f; do something; done
Puisque inotifywait
ne se termine pas par lui-même, ce script ne s'arrêtera pas.
Mon plan était donc d'obtenir le PID du processus inotifywait, de l'enregistrer dans un fichier et de le tuer plus tard par un processus différent, par exemple:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
Mais je ne sais pas comment obtenir le PID. Existe-t-il un moyen simple d'y parvenir? Une autre façon consiste simplement à enregistrer le PID du script shell $$
dans le fichier et à tuer l'intégralité du script shell, mais je voulais faire un peu de nettoyage après la boucle while.
J'ai essayé d'utiliser coproc
et je pense que cela fonctionnera mais cela semble être plus compliqué que nécessaire.
pgrep inotifywait
. Cela vous donnera le PID, tuer, pkill inotifwait
.
grep -v grep
, mais vous ps -ef | grep [p]rocessname...
feriez de même.
-f
commutateur si vous avez besoin de faire correspondre plus de noms d'exécutables.