¿La forma más elegante de verificar si un proceso se está ejecutando y comenzar si no?

8

He estado jugando con varias formas de hacer esto en bash, y he descubierto pgrep program > /dev/null || programque es la forma más corta / elegante de hacerlo. ¿Hay un método mejor que este?

una persona
fuente

Respuestas:

9

Con pgrep, puedes combinar otros programas además del tuyo. Si desea asegurarse de que coincida con el programa correcto, use pidofen su lugar.

También puede usar start-stop-daemoncon un archivo PID. start-stop-daemoncomprobará si el programa se está ejecutando y lo iniciará si es necesario. Esto es lo que se usa en la mayoría de los scripts de inicio.

Phaphink
fuente
Revisando el archivo man de start-stop-daemon y se ve bien. Gracias por la idea!
persona el
1
También puede estar interesado en la /lib/lsb/init-functionsbiblioteca, que la mayoría de los scripts de inicio analizan para usar funciones de contenedor como start_daemono pidofproc.
phaphink
1
[ -z `pidof program` ] || echo "program runing"
# or 
[ -z `pidof program` ] && OtherProgram 
SergioAraujo
fuente
¿Podría explicarle al OP qué hacer con este comando?
nanofarad