O crontab raiz não está em execução

10

Por alguma razão, meu crontab raiz não parece estar em execução.

Tentando reiniciar o dispositivo todas as noites à meia-noite.

Deve ser o seguinte como raiz:

crontab -e

Adicione então:

0 0 * * * /sbin/shutdown -r now

Quando testo usando alguns valores próximos ao horário atual, nada acontece. Instalei o NTP e verifiquei se o fuso horário está correto. Também estou especificando usando o relógio de 24 horas. Por exemplo, para testar esta linha agora (17h35), tento digitar o seguinte:

36 17 * * * /sbin/shutdown -r now

Eu verifiquei a hora com a data -R. A hora da execução do crontab vai e vem e o sistema não é reiniciado. O que estou perdendo aqui?

Atomiklan
fonte
Só para ter certeza, você está fechando o crontab após editá-lo, certo? Além disso, como você "executou como root"? Qual é a saída de sudo crontab -l | grep -v '#'?
terdon
Por que isso está marcado com debian ? Se isso é sobre o Debian e não o Ubuntu, por favor, pergunte no Unix e Linux .
Muru
Porque o debian está no centro do Ubuntu, acredito.
Atomiklan

Respostas:

11

Eu tenho três sugestões de solução para você.

  1. Invoque o crontab com crontab -e -u root

  2. Verifique se você possui uma linha vazia no final do arquivo cronjob, o que significa que cada linha termina com uma nova linha.

  3. Pode ser necessário redirecionar a saída para devnull: shutdown -r now > /dev/null

Aqui estão duas páginas úteis para cronjobs:

Testador CRON

Gerador CRON

Você também pode manipular os cronjobs ordenadamente com o webmin .

Fora isso, você tem pelo menos mais duas maneiras de reiniciar o computador à meia-noite.

Uma é executar o comando shutdown como um script automaticamente no login, mas com tempo específico como parâmetro, em vez de "now":

shutdown -r 00:00

No entanto, isso gerará uma mensagem de difusão do próximo desligamento a cada login (pode não ser uma coisa ruim). Bem, você também pode fazer isso ser executado no momento da inicialização, adicionando o script em init.d, ainda assim gerando a mensagem.

Outra é usar o atcomando:

at 0am

Digite o comando shutdown -r nowe salve-o com ctrl + d ou crie um script para o comando e faça:

at -f restart_script.sh 0am

Espero que isso ajude você a obter o resultado desejado.

Ahti Komu
fonte
A solução foi enviar para dev null. Eu quero saber porque?
precisa saber é o seguinte
Isso ocorre porque o job cron possui seu próprio ambiente, que não possui um sistema padrão de entrada / saída esperado e o processo falha porque ele está tentando transmitir mensagens para um canal de saída ausente. O trabalho do Cron é realmente uma coisa muito diferente em comparação com a execução de algum comando no terminal como qualquer usuário. Fico feliz em saber que você conseguiu fazer isso, afinal.
Ahti Komu 27/11/14
0

Os trabalhos do System Cron estão listados no arquivo / etc / crontab. Portanto, editar esse arquivo diretamente ajudará você a executar o comando reboot como root.

Portanto,

$ sudo vi /etc/crontab

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  23 20 *  *  *  root  shutdown  -r  now

verifique o arquivo de log do Cron após editar o crontab, pois isso permitirá que você saiba se o cron foi instalado com sucesso.

Eu testei e funcionou para mim. Reiniciei o meu sistema às 20:23

Boa sorte!

rulebreaker4
fonte
-3

36 17 * * * etc ..

36 17 não é uma maneira de especificar a hora certa no seu cron.

verifique o comando via data para ver se seu sistema está funcionando no horário dos EUA ou no horário da Europa

use 17 36 se o horário europeu e se o seu sistema usar 24 horas ou 5 36 se o sistema usar o horário dos EUA e 12 horas

toto
fonte
Não é verdade! O Cron não usa o formato de 12 horas e o formato é sempre mm hh DD MM WD.
Ahti Komu
Por favor, leia o post inteiro na próxima vez.
Atomiklan