Eu recentemente trabalhei nisso e encontrei entradas no log do sistema ( /var/log/system.log
) que mostram erros relacionados a esse problema, como:
Nov 1 08:52:14 my-computer com.apple.launchd[1] (org.postfix.master[22591]): Stray process with PGID equal to this dead job: PID 22592 PPID 1 pickup
Nov 1 08:52:14 my-computer com.apple.launchd[1] (org.postfix.master[22591]): Stray process with PGID equal to this dead job: PID 22594 PPID 1 cleanup
Descobri que meu script de logcheck e o e-mail esperado funcionavam perfeitamente quando executados na linha de comando, e que o script logcheck executava bem suas funções quando iniciado usando launchd através de um script LaunchDaemon.
No entanto, o email nunca chegou ao usar launchd
. Os erros acima, e muitos outros, envolvendo postfix e sendmail, indicam que os processos do sendmail filho estavam sendo finalizados pelo launchd (como parte de suas rotinas de coleta de lixo?) Antes de terem tempo para serem concluídos.
Eu adicionei a seguinte chave ao meu plist:
<key>AbandonProcessGroup</key>
</true>
e o e-mail começou a fluir ao usar o launchd. Infelizmente, ainda recebo as mensagens de processo / tarefa perdidas no meu system.log, que atualmente estou trabalhando para eliminar. Adicionei uma linha sleep 120
ao meu script logcheck.sh
, o que reduziu, mas não eliminou, essas mensagens. Eu poderia aumentar o tempo do comando sleep em logcheck.sh
, para que o script persista por mais tempo, mas eu não gosto desse 'hack' em particular e quero encontrar uma solução mais elegante. Eu acredito que o launchd não inicia sua coleta de lixo até que o processo logcheck.sh seja concluído ....
Vou tentar alongar explicitamente a chave TimeOut na lista de controle e ver se isso funciona melhor.