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?

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.


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 

Você poderia explicar ao OP o que fazer com este comando?
Nanofarad
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.