Sim, há errado. O monit exec
parece executar uma execução de exec(3)
do estilo da string fornecida, e não uma system(3)
call; Isso significa que a sintaxe do shell (redirecionamentos e outras coisas) não são suportadas, pois os dados fornecidos não estão sendo executados através de um shell. Em vez disso, escreva um código adequado que use as variáveis de ambiente monit (que serão exportadas para o código assim exec
ed):
# cat /root/blah
#!/bin/sh
echo "$MONIT_EVENT" > /root/woot
# chmod +x /root/blah
#
E, em seguida, chame esse código a partir da configuração do monit:
# tail -2 /etc/monitrc
check process itsdeadjim with pidfile "/nopenopenope"
if does not exist then exec "/root/blah"
#
Isso preenche o arquivo /root/woot
para mim:
# rm /root/woot
# rcctl restart monit && sleep 10
monit(ok)
monit(ok)
# cat /root/woot
Does not exist
#