Comment configurer Ubuntu pour redémarrer chaque jour à une heure donnée?

11

En utilisant le terminal ou un fichier bash, comment puis-je configurer Ubuntu pour redémarrer chaque jour à (disons par exemple) 3 heures du matin?

En d'autres termes, je veux planifier un redémarrage automatique via le terminal.

Je n'ai pas pu trouver quoi que ce soit sur Google ou AskUbuntu, et je suis assez nouveau sur Ubuntu en général (je viens de recevoir mon nouveau Raspberry Pi).

Mathias Lykkegaard Lorenzen
la source

Réponses:

13

Modifiez les entrées crontab à l'aide de la crontab -ecommande (par défaut, cela modifiera la crontab des utilisateurs connectés actuels) et ajoutez la ligne suivante:

0 3 * * * echo $PASSWD | sudo -S reboot
#change $PASSWD with your password

Enregistrez le fichier et vérifiez la nouvelle entrée crontab avec crontab -l.

Si vous souhaitez utiliser uniquement:

0 3 * * * sudo reboot

en tant que crontab, cela ne fonctionne pas normalement et vous devriez vérifier ce post pour voir comment vous pouvez le faire fonctionner.

Ou, ajoutez simplement la crontab au fichier crontab de l'utilisateur root offrant le chemin complet de la rebootcommande en utilisant sudo crontab -e:

0 3 * * * /sbin/reboot
Radu Rădeanu
la source
Ne pourriez-vous pas mettre cela dans la crontab de root et ne vous inquiétez pas trop pour leecho $PASSWD
Dan
Je ne le savais pas. Est-ce un bug de cron ou est-ce normal? Je veux dire, si vous éditez la crontab en tant que root, alors le travail ne sera exécuté que si vous êtes connecté en tant que root? Je pense que cela est faux. (ou devrait l'être).
NickTux
@ RaduRădeanu Ce n'est pas vrai. Les cronjobs root s'exécuteront sans être connecté en tant que root.
OrangeTux
@OrangeTux Vous avez raison, désolé, je l'ai dit parce que j'ai testé sans pour donner le chemin complet de la rebootcommande. Sinon, cela ne fonctionnera pas. Voir mes nouvelles modifications.
Radu Rădeanu
@NikTh je me trompais, voir le commentaire ci-dessus .
Radu Rădeanu
1

Notez que la saisie de votre mot de passe en texte clair dans un fichier texte n'est pas une bonne idée, il est donc préférable d'exécuter ce travail en tant que root dès le départ. Habituellement, plutôt que de modifier la crontab de root via la crontabcommande, qui laisse les entrées dans /var/spool/cron/crontabsun emplacement quelque peu cryptique, je préfère les entrer explicitement dans /etc/cron.d. Les entrées dans cron.d sont exécutées en tant qu'entrées crontab système, sont traitées comme des fichiers de configuration afin qu'elles survivent aux redémarrages, mises à jour et mises à niveau du système, et vous pouvez spécifier explicitement l'utilisateur en cours d'exécution:

echo "0 3 * * * root /sbin/shutdown -h 5 'System will reboot in 5 minutes'" | sudo tee /etc/cron.d/reboot-at-3-am

Si vous n'avez pas besoin d'une heure spécifique, mais que vous voulez plutôt que le système redémarre une fois par jour, ajoutez un exécutable ou un script /etc/cron.dailyet il s'exécutera automatiquement à une heure prédéterminée (heure système par défaut à 6h25):

echo "/sbin/shutdown -h 5 'System will reboot in 5 minutes'" | sudo tee /etc/cron.daily/reboot-me

Notez que plutôt que de simplement redémarrer le système sans avertissement, je mets un avertissement de 5 minutes, donc si quelqu'un est connecté, il a la possibilité d'enregistrer son travail, ou même d'interrompre l'arrêt avec sudo shutdown -c, plutôt que de faire tirer le système hors d'eux. Vous pouvez les ajuster en conséquence, si vous souhaitez donner un avertissement plus ample (par exemple, utilisez shutdown -h 60et exécutez la commande à 02h00 et vous donnerez aux utilisateurs un avertissement généreux d'une heure).

Ceci est basé sur mon expérience passée; à un moment donné, vous serez connecté en travaillant lorsque l'entrée crontab s'exécute, et si elle redémarre simplement sans avertissement, vous serez un panda très triste.

roadmr
la source
-1

Pourquoi voulez-vous - ou devez- vous faire cela? Bien qu'il soit assez simple à faire, il existe presque certainement une meilleure solution avec Linux qui n'implique pas de redémarrage. Contrairement à Windows, les systèmes d'exploitation basés sur Linux ne nécessitent pas de redémarrage pour presque tout sauf les mises à niveau du noyau.

Si vous expliquez ce que vous essayez de réaliser, nous pouvons probablement vous aider mieux.

Jack Knight
la source
3
Il veut redémarrer l'ordinateur tous les soirs pour qu'il redémarre
Michael Butler