Solução alternativa: não use monit. Escrever daemons corretamente é difícil , e na minha experiência é muito mais fácil usar um sistema de gerenciamento de processos que faz a daemonização para você (eu gosto daemontools - não é a única opção disponível, mas experimentei todos e continuo a voltar aos daemontools. Os benefícios de fazer as coisas dessa maneira são muitos:
- Daemonising é difícil : Corretamente daemonização de um programa é difícil (não é "multi-threaded" difícil, mas pelo menos "você entenderá horrivelmente" as primeiras 20 vezes "duras". Por que desperdiçar seu tempo escrevendo (e depurando com frequência) códigos que não agregam valor comercial, quando alguém já fez isso por você?
- Arquivos PID são sugados : Eles são vigorosos (há um período de tempo em que o processo está em execução, mas o arquivo PID não está), não garantido que seja preciso (quando seu daemon morre e outro processo é PID, torna as coisas muito mais complicadas), e eles exigem acesso ao sistema de arquivos (possivelmente para lugares que você prefere não permitir que programas sem privilégios tenham acesso).
- Não é monit : Passei 8 meses da minha vida sendo chutado na cabeça por monit e há muitas idiocracias, defeitos de design, bugs e insanidade variada. Vou deixar um emprego em vez de usar o monitor novamente - sinto isso com força.