Você pode usar, por exemplo, pgrep
para procurar processos com um nome específico.
Como exemplo, posso ver se o music player do Rhythmbox está sendo executado, digitando:
$ pgrep rhythmbox
827
Se algum número for impresso (e o status de saída for 0), isso significa que ele encontrou um processo de correspondência. Caso contrário, a saída estará vazia e você terá um status de saída diferente de zero.
Agora podemos simplesmente executar isso repetidamente em um loop infinito. Para economizar recursos, esperamos um segundo entre cada iteração. Dependendo se um processo correspondente for encontrado ou não, esse pequeno script abaixo gravará yes
ou no
em um arquivo status.txt
.
#!/bin/bash
while sleep 1 ; do
if pgrep rhythmbox &>/dev/null ; then
echo "yes" > status.txt
else
echo "no" > status.txt
fi
done
Você também pode fazer algo mais útil dentro do loop, por exemplo, comutação de links simbólicos entre dois documentos html pré-fabricados. Suponha que temos running.html
e stopped.html
e queremos que o código correto seja vinculado como status.html
, que então poderia ser servido pelo seu servidor web. Poderia ser assim:
#!/bin/bash
while sleep 1 ; do
if pgrep rhythmbox &>/dev/null ; then
ln -s running.html status.html
else
ln -s stopped.html status.html
fi
done
No entanto, eu não testei como um servidor web pode reagir nesta troca de link, também é possível que ele armazene coisas em cache e as alterações não sejam ativadas imediatamente, não tem idéia. Você tem que experimentá-lo.