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.