A maneira mais elegante de verificar se um processo está em execução e iniciar se não estiver?

8

Eu tenho mexido com várias maneiras de fazer isso no bash, e eu achei pgrep program > /dev/null || programa maneira mais curta / elegante de fazer isso. Existe um método melhor do que isso?

uma pessoa
fonte

Respostas:

9

Com pgrep, você pode corresponder a outros programas além do seu. Se quiser ter certeza de que combina com o programa certo, use-o pidof.

Você também pode usar start-stop-daemoncom um arquivo PID. start-stop-daemonirá verificar se o programa está em execução e iniciá-lo, se necessário. É isso que é usado na maioria dos scripts de inicialização.

ℝaphink
fonte
Examinando o arquivo man do start-stop-daemon e parece bom. Obrigado pela compreensão!
Ap26
11
Você também pode estar interessado na /lib/lsb/init-functionsbiblioteca, que a maioria dos scripts init analisa para usar funções de wrapper como start_daemonou pidofproc.
precisa saber é o seguinte
1
[ -z `pidof program` ] || echo "program runing"
# or 
[ -z `pidof program` ] && OtherProgram 
SergioAraujo
fonte
Você poderia explicar ao OP o que fazer com este comando?
Nanofarad