Um processo para verificar se outros processos estão sendo executados? [duplicado]

0

Atualmente, estou implantando computadores na casa do meu cliente.

Estou executando os seguintes scripts:

  1. ngrok (um daemon de encapsulamento para a frente ssh)
  2. heartbeat.py (um script que envia um sinal de heartbeat para loggly, confirmando que meu computador está ativo)
  3. metrics.py (um script que registra todos os dados ambientais, como temp, espaço em disco para loggly)

Portanto, nos meus testes, até agora, o metrics.py é um pouco instável (o que significa que ele falha ocasionalmente).

Existe um pacote no * NIX que faz o seguinte?

  1. verifique a cada segundo X se um processo está sendo executado
  2. se # 1 não for verdadeiro, execute-o
  3. Faça isso para uma lista de processos
por Edward 20.12.2016 / 03:38

2 respostas

1

Por mais que eu não goste de systemd , eu tenho que admitir que isso pode definitivamente fazer isso.

Nem todos os sistemas init suportam a reinicialização automática de processos com falha.

No entanto, observe que verificar se um processo ainda está "em execução" é apenas a verificação de integridade mais rudimentar que você pode fazer. É melhor se o loop principal do programa puder verificar algum tipo de "você ainda está vivo?" mensagem e responder a ela. Então você sabe que não ficou preso em um loop infinito, ou ficou esperando por E / S que não será completada.

    
por 20.12.2016 / 04:48
0

Provavelmente, um script simples pode ajudar:

ps -axu | grep '[n]grok' 2>&1 1>/dev/null || bash -c "ngrok"

O script acima verifica o estado de execução de ngrok , se não estiver em execução, execute o comando para iniciá-lo. Os parênteses no comando grep ajudam a filtrar o próprio comando grep no resultado.

Adicione isto ao seu arquivo cron config, ele será verificado periodicamente.

NOTA:

Pode ser necessário adicionar algum atraso entre a verificação e a reinicialização; também é necessário um limite de tentativas superior para evitar situações em que ngrok tenha algum erro crítico e não possa ser iniciado novamente.

    
por 20.12.2016 / 05:45

Tags