La façon la plus élégante de vérifier si un processus est en cours d'exécution et de démarrer sinon?


8

J'ai joué avec différentes façons de faire cela en bash, et j'ai trouvé que pgrep program > /dev/null || programc'était la manière la plus courte / la plus élégante de le faire. Existe-t-il une meilleure méthode que celle-ci?

Réponses:


9

Avec pgrep, vous pourriez faire correspondre d'autres programmes que le vôtre. Si vous voulez être sûr de faire correspondre le bon programme, utilisez pidofplutôt.

Vous pouvez également utiliser start-stop-daemonavec un fichier PID. start-stop-daemonva vérifier si le programme est en cours d'exécution et le démarrer si nécessaire. C'est ce qui est utilisé dans la plupart des scripts d'initialisation.


En parcourant le fichier man de start-stop-daemon et ça a l'air sympa. Merci pour la perspicacité!
aperson

1
Vous pourriez également être intéressé par la /lib/lsb/init-functionsbibliothèque, que la plupart des scripts d'initialisation analysent pour utiliser des fonctions wrapper telles que start_daemonou pidofproc.
ℝaphink

1
[ -z `pidof program` ] || echo "program runing"
# or 
[ -z `pidof program` ] && OtherProgram 

Pourriez-vous expliquer au PO ce qu'il faut faire avec cette commande?
nanofarad
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.