Eu não sei se você pode fazer isso com monit
, mas me parece a Solução Errada que pode trazer seus próprios problemas (especialmente se Coisas Ruins acontecerem se você matar o daemon "errado" (?)).
A Solução Certa é para que seu daemon crie e verifique um bloqueio (os arquivos PID funcionam muito bem para isso - se mydaemon.pid
existir e o PID nele estiver ativo, recuse-se a iniciar o daemon)
Existem várias gemas / bibliotecas / etc do ruby ruby disponíveis ( como esta ).
Se modificar o daemon estiver fora de questão, quase todos os sistemas Unix vêm com o comando lockfile
ou algo semelhante - coloque o daemon em um script de shell que cria / verifica o bloqueio antes de tentar iniciar.
Isso ajuda se você colocar o arquivo de bloqueio em algum lugar que seja limpo na reinicialização ( /tmp
, /var/run
, etc.) para que, se o sistema travar, o daemon reinicie quando o script init for executado.