arquivo PID para o programa C para monit [closed]

1

Como posso criar um arquivo pid para um programa C a ser usado em monit e como monitorar esse programa C usando monit?

    
por Vamshi Krishna Nagamalla 06.05.2012 / 03:47

2 respostas

2

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.
por 06.05.2012 / 04:12
2

Eu acho que o Monit ainda é uma ferramenta útil. Não há muitas alternativas sólidas.

Quanto ao programa C, você deve procurar em daemonizing o processo . Esse é o método adequado. Monit é capaz de monitorar padrões de nome de processo em vez de arquivos PID. Em uma pitada, você pode ter uma configuração Monit que se parece com o seguinte, assumindo que o nome do programa é "c_program" e que há uma única instância dele:

check process c_program
        matching "c_program"
        start program = "/path/to/c_program"
        stop program = "killall c_program"
    
por 06.05.2012 / 09:25

Tags