Como eu crio um script para reiniciar um serviço a cada duas horas? [duplicado]

0

Eu quero fazer um simples arquivo init.d que me permita redefinir um serviço de avaliação que estou usando. No momento, estou usando o CodeSys e o script de inicialização me interrompe após 2 horas, portanto, preciso redefinir a máquina ou reiniciar manualmente o serviço.

Alguém poderia me ajudar a fazer um script que:

service stop codesys
service start codesys

(a cada 7200 segundos em um loop infinito)

Obrigado antecipadamente!

EDIT: Aqui está o script de inicialização que foi inicialmente incluído, você encontra alguma coisa relacionada a um temporizador de 2 horas? Eu realmente não sei muito sobre essas coisas.

link

    
por Pinn the Angled one 15.04.2015 / 11:21

1 resposta

4

A maneira mais direta é simplesmente executar uma vez :

sudo service start codesys && watch -n 7200 'sudo service stop codesys && sudo service start codesys'

Isso executará o comando sudo service stop codesys && sudo service start codesys (que interrompe o serviço codesys e, em caso de sucesso, o inicia novamente) a cada 7200 segundos exibindo a saída potencial.

Observe que, neste caso, já que o comando a ser executado é, na verdade, uma cadeia de dois comandos, as cotas para incluir o comando são necessárias.

Aqui está um resumo das seções relevantes para watch de man watch (trusty) :

[...]
DESCRIPTION
       watch  runs  command  repeatedly, displaying its output and errors (the
       first screenfull).  This allows you to watch the program output  change
       over  time.   By  default,  the  program  is  run  every 2 seconds.  By
       default, watch will run until interrupted.

OPTIONS
[...]
       -n, --interval seconds
              Specify  update  interval.   The  command will not allow quicker
              than 0.1 second  interval,  in  which  the  smaller  values  are
              converted.
[...]

Para executá-lo na inicialização, adicione essa linha a /etc/rc.local antes da linha exit 0 :

nohup sh -c "sudo service start codesys && watch -n 7200 \"sudo service stop codesys && sudo service start codesys\"" > /dev/null &

nohup inicia um processo imune a SIGHUP sinais, redireciona o processo ' stdin para /dev/null e ambos stdout e stderr para um arquivo nohup.out , nesse caso stdout e stderr são redirecionados para /dev/null , já que você não precisa verificar a saída. Para usar nohup é feito para que o processo não seja eliminado quando a execução de /etc/rc.local terminar. O operador & coloca o processo em segundo plano, para que a execução de /etc/rc.local possa continuar.

    
por kos 15.04.2015 / 11:47