Eu sou bem fraquinho de bash-script, mas a primeira coisa que me vem
à cabeça é usar o comando pidof pra ver se o daemon em questão tá
rodando.

  Tente, no shell:

  # pidof programa > /dev/null && echo "Programa rodando" || echo
"Programa não está rodando"

  Se o processo existir vai jogar "Programa rodando" na tela ou
"Programa não está rodando" se não estiver.
  O redirecionamento pra /dev/null é só pra não jogar o PID do programa na tela.

  Uma maneira melhor de você poder tratar a ação a ser executada de
acordo com o estado do programa, é usando a variável $?, que guarda o
código de retorno do último comando executado.
  A grande maioria dos programas de Unix retornam 0 (zero) como código
de sucesso, e 1 em caso contrário.

  Por exemplo, num script:

  #!/bin/bash

  pidof programa > /dev/null
  if [ $? -eq 0 ]; then
      echo "Programa rodando"
  else
     echo "Programa não está rodando"
   fi

  Se quiser saber o PID do processo é só atribuir o comando a uma
variável, assim:

  PID=`pidof programa`

  A partir disso você pode escolher o que fazer quando um programa que
deveria estar rodando, não está e tal. Fica a seu gosto.

  Inclusive se você for verificar vários deles, como citado, seria
mais inteligente fazer uma lista e ir varrendo com um laço FOR cada um
deles, e iniciando os que estivessem parados e tal, se essa for sua
intenção.

Responder a