Root crontab ne fonctionne pas

10

Pour une raison quelconque, mon root crontab ne semble pas fonctionner.

Essayer de redémarrer l'appareil tous les soirs à minuit.

Doit être le suivant en tant que root:

crontab -e

Puis ajouter:

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

Lorsque je teste en utilisant des valeurs proches de l'heure actuelle, rien ne se passe. J'ai installé NTP et vérifié que le fuseau horaire est correct. Je précise également en utilisant l'horloge de 24 heures. Par exemple, pour tester cette ligne dès maintenant (17 h 35), j'essaie de saisir ce qui suit:

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

J'ai vérifié l'heure avec la date -R. Le temps d'exécution de la crontab va et vient et le système ne redémarre pas. Qu'est-ce que j'oublie ici?

Atomiklan
la source
Juste pour être sûr, vous fermez la crontab après l'avoir édité, non? Aussi, comment avez-vous "exécuté en tant que root"? Quelle est la sortie de sudo crontab -l | grep -v '#'?
terdon
Pourquoi est-ce tag Debian ? S'il s'agit de Debian et non d'Ubuntu, veuillez demander sur Unix et Linux .
muru
Parce que Debian est au cœur d'Ubuntu, je crois.
Atomiklan

Réponses:

11

J'ai trois suggestions de solutions pour vous.

  1. Appelez le crontab avec crontab -e -u root

  2. Assurez-vous que vous disposez d'une ligne vide à la fin du fichier cronjob, ce qui signifie que chaque ligne se termine par une nouvelle ligne.

  3. Vous devrez peut-être rediriger la sortie vers devnull: shutdown -r now > /dev/null

Voici deux pages Web utiles pour les tâches cron:

Testeur CRON

Générateur CRON

Vous pouvez également gérer les cronjobs proprement avec webmin .

En dehors de cela, vous avez au moins deux autres façons de redémarrer votre ordinateur à minuit.

L'une consiste à exécuter automatiquement la commande d'arrêt en tant que script lors de la connexion, mais avec un temps spécifique en tant que paramètre au lieu de "maintenant":

shutdown -r 00:00

Cependant, cela produira un message de diffusion de l'arrêt à venir à chaque connexion (ce n'est peut-être pas du tout une mauvaise chose). Eh bien, vous pouvez également faire en sorte que cela soit exécuté au démarrage en ajoutant le script dans init.d, mais en produisant toujours le message.

Une autre consiste à utiliser la atcommande:

at 0am

Entrez la commande shutdown -r nowet enregistrez-la avec ctrl + d ou faites un script pour la commande et faites:

at -f restart_script.sh 0am

J'espère que ceux-ci vous aideront à obtenir le résultat souhaité.

Ahti Komu
la source
La solution consistait à sortir en dev null. Je me demande pourquoi?
Atomiklan
C'est parce que cron job a son propre environnement qui n'a pas un tel système d'entrée / sortie que vous attendez et le processus échoue car il essaie de diffuser des messages dans un canal de sortie manquant. Le travail Cron est en réalité très différent de l'exécution de certaines commandes dans le terminal comme n'importe quel utilisateur. Heureux d'apprendre que vous l'avez fait fonctionner après tout.
Ahti Komu
0

Les tâches System Cron sont répertoriées dans le fichier / etc / crontab. Par conséquent, la modification directe de ce fichier vous aidera à exécuter la commande de redémarrage en tant que root.

par conséquent,

$ 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

assurez-vous de vérifier le fichier journal Cron après avoir modifié la crontab car il vous permettra de savoir si le cron a été installé avec succès.

Je l'ai testé et cela a fonctionné pour moi. Redémarrage de mon système à 20h23

Bonne chance!

règlebriseur4
la source
-3

36 17 * * * etc.

36 17 n'est pas un moyen de spécifier le bon moment dans votre cron.

vérifier via la commande date pour voir si votre système fonctionne en heure américaine ou européenne

utilisez 17 36 si heure européenne et si votre système utilise 24 heures ou 5 36 si votre système utilise US TIME et 12 heures

toto
la source
Pas vrai! Cron n'utilise pas le format d'heure 12 heures et le format est toujours mm hh DD MM WD.
Ahti Komu
Veuillez lire l'intégralité du message la prochaine fois.
Atomiklan