doctorx777
(usa Ubuntu)
Enviado em 19/05/2012 - 17:08h
Olá pessoal,
Tenho um probleminha interessante aqui.
Tenho um pequeno programinha no servidor que fica verificando
o status de outras máquinas.
A cada 10 segundos ele printa no prompt se está ok ou se não está respondendo.
O meu problema é que as vezes esse programinha trava, não mostra "ok" nem "não responde" na tela,
simplesmente trava por motivos que ainda não sei. Aí eu tenho que periodicamente ficar olhando
se ele não travou, e se travou preciso kilar o danado e iniciar de novo. O problema é que não tenho
tempo de ficar olhando toda hora se ele travou ou não, e as vezes quando olho ele já tá a muito tempo parado
e isso prejudica um relatorio final que geramos, que é baseado na quantidade de "ok" e "não responde" das nossas máquinas.
Então, o que eu gostaria que vcs me dessem uma idéia, é como killar esse programa através de algum script,
que verificaria se o terminal não apresentasse nenhuma mensagem dentro de 1 minuto, então killa meu programinha
e o inicia de novo.
Eu já vi aqui um começo, com o comando
w eu consigo ver todos os prompts abertos
SER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 12:34 3:11m 1:07 0.00s /bin/bash /usr/
root pts/0 :0.0 12:37 19:26 0.37s 0.37s bash
root pts/1 :0.0 13:02 1:59 0.10s 0.10s bash
root pts/2 :0.0 13:26 7:21 51.74s 51.08s /usr/bin/python
root pts/3 :0.0 15:46 0.00s 0.00s 0.00s w
Ou seja, nesse caso tenho 4 terminais abertos executando tarefas diversas, e nosso querido e complicado programinha
está aqui no pts/2
Então precisaria de um script que monitorasse a saída do pts/2, e se dentro de 1 minuto nada aparecer (o que indica que o danado travou)
daria um
killall -9 python; python monitora.py
É isso ai. Se alguem puder me dar uma luz, fico eternamente agradecido.
Valeu.