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?

une personne
la source

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.

ℝaphink
la source
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 
SergioAraujo
la source
Pourriez-vous expliquer au PO ce qu'il faut faire avec cette commande?
nanofarad