Use crontab para reiniciar um serviço Upstart no horário?

2

Eu preciso reiniciar o shiny-server (serviço Upstart) no Ubuntu 12.04 em uma programação de rotina.

Normalmente, se eu quiser reiniciar esse serviço manualmente, basta digitar: sudo restart shiny-server ou service shiny-server restart (como root ). Pelo que entendi, isso é semelhante a algo como sudo restart mysql .

Para agendar a reinicialização, tentei as entradas a seguir no meu root user crontab :

 0 6 * * * restart shiny-server
 0 6 * * * service shiny-server restart
 0 6 * * * bash /home/local/ANT/raybao/dev/script.sh

Em que a última linha de script.sh é service shiny-server restart .

Nenhuma das opções acima funciona de verdade!

Então, estou bastante perplexo / confuso. o que estou perdendo? Obrigado !!

Mais informações sobre shiny-server aqui: link

    
por Ray 19.10.2015 / 20:59

1 resposta

8

Você está no caminho correto, adicionando isso ao usuário root cron .

Caminhos completos do sistema

Ao usar cron , você quer ter certeza de usar caminhos completos do sistema para comandos e arquivos. Você pode usar o comando which para descobrir onde restart está localizado: which restart . Para mim, mostra /sbin/restart .

Então, usando esta informação, o cron ficaria da seguinte forma:

0 6 * * * /sbin/restart shiny-server

que reiniciaria o servidor às 6h da manhã no horário do sistema.

Saída para / dev / null

Quando cron for executado, ele enviará uma saída qualquer para o usuário que está executando as tarefas cron. Se você não quer isso, o que você provavelmente não faz, o comando que você executaria ficaria assim:

0 6 * * * /sbin/restart shiny-server > /dev/null 2>&1

Isso produzirá stdout e stderr para /dev/null , em vez de serem lidos por cron .

Editar

Originalmente, eu entendi errado e achei que esse serviço estava em execução usando init , quando na verdade está usando upstart . A moral da história continua a usar caminhos completos do sistema ao usar cron .

    
por earthmeLon 19.10.2015 / 22:03