Corrija-me se estiver errado:
- se o programa trava, o arquivo PID permanece, mas a porta 9999 está fechada
- se o programa parar de forma limpa, o arquivo PID será removido e a porta 9999 será fechada
O comportamento comum é sobre a porta 9999. Você poderia monitorar isso usando algo assim:
check host 127.0.0.1 with address 127.0.0.1
start program = "/etc/init.d/xxx restart"
stop program = "/etc/init.d/xxx stop"
if failed port 9999 then restart
O acima deve ser suficiente para cobrir todos os casos, mas você pode adicioná-lo como uma declaração adicional à sua existente (que será o tipo de OR
do qual você está falando).
Dê uma olhada no documento sobre o host de verificação .
PS:
Eu acho, em relação ao doc (a amostra sobre o Apache) , que a configuração que você tem deve ser capaz de reinicie seu processo se a porta 9999 não estiver acessível, mesmo que o arquivo PID ainda exista. Meu palpite é que a porta 9999 não está fechada, ou a porta 9999 não está escutando em 127.0.0.1 (por favor, verifique todos usando netstat
).
Então, na sua configuração, tente substituir a linha do monitor de porta por esta:
if failed port 9999 then restart
(removendo host 127.0.0.1
).