Processo em segundo plano de instância única com recarregamento

0

Existe uma ferramenta de shell que executa um executável arbitrário e torna um processo de segundo plano detectável e reinicializável?

Se eu tivesse que fazer o script sozinho, usaria um $PIDFILE e algo do tipo ...

if [ -f $PIDFILE ] && ps -p 'cat $PIDFILE' &> /dev/null; then
    # Already running, kill, restart
else
    # Stale pidfile, start
fi

Parece que há um programa que faz isso mil vezes melhor do que qualquer coisa que eu tenha criado. Existe?

Se não houver, que ressalvas e armadilhas eu devo ter em mente ao implementar um script como o acima?

    
por slezica 22.03.2013 / 11:45

3 respostas

0

Nos sistemas Debian existe start-stop-daemon . Eu recomendo usar isso, e se você não está no Debian ou no Ubuntu, apenas copie esse script do Debian e tente.

    
por 22.03.2013 / 12:08
0

Se você quiser fazer isso em um shell script, você pode usar subshells e fazer algo como:

#!/bin/bash
(
while true; do
  echo "I'm process A"
  sleep 1
done
) &
(
while true; do
  echo "I'm process B"
  sleep 3
done
) &
wait
wait

Os comandos entre parênteses são executados em segundo plano, porque, se o e comercial e os comandos wait, garantem que os scripts pai não saiam. É possível salvar o pid dos subshells salvando $! após cada subshell.

    
por 22.03.2013 / 12:23
0

Historicamente, esse monitoramento de processo foi feito pelo programa init . Hoje, init pode ter sido substituído pelo seu sistema operacional por uma das várias alternativas propostas: upstart , systemd , launchd (consulte link para uma lista mais longa). Verifique qual o seu sistema operacional usa para ver como ele cria e monitora processos de longa duração.

    
por 22.03.2013 / 14:05

Tags