web-dev-qa-db-fra.com

Comment configurer Ubuntu pour qu'il redémarre tous les jours à une heure donnée?

En utilisant le terminal ou un fichier bash, comment puis-je configurer Ubuntu pour qu'il redémarre tous les jours à (disons, par exemple) 3 heures du matin?

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

Je n'ai rien trouvé à ce sujet sur Google ou AskUbuntu, et je suis assez nouveau pour Ubuntu en général (je viens de recevoir mon nouveau Raspberry Pi).

Editez les entrées de la crontab à l'aide de la commande crontab -e (par défaut, cela modifiera la crontab des utilisateurs actuellement connectés) 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 de la crontab avec crontab -l.

Si vous voulez utiliser uniquement:

0 3 * * * Sudo reboot

comme crontab, cela ne fonctionne pas normalement et vous devriez vérifier cet article pour voir comment vous pouvez le faire fonctionner.

Ou bien, ajoutez simplement la crontab au fichier crontab de l'utilisateur root offrant le chemin complet de la commande reboot en utilisant Sudo crontab -e:

0 3 * * * /sbin/reboot
12
Radu Rădeanu

Notez que l'insertion 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ébut. Généralement, plutôt que d’éditer la crontab de root via la commande crontab, qui laisse les entrées dans /var/spool/cron/crontabs, un 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 de la crontab système, sont traitées comme des fichiers de configuration. Elles doivent donc survivre aux redémarrages, mises à jour et mises à niveau du système. Vous pouvez également 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 précise, mais souhaitez simplement que le système redémarre une fois par jour, ajoutez un exécutable ou un script dans /etc/cron.daily et il s'exécutera automatiquement à une heure prédéterminée (06h25, heure système par défaut):

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. Ainsi, si un utilisateur est connecté, il a la possibilité de sauvegarder son travail ou même d'interrompre la fermeture avec Sudo shutdown -c plutôt que de disposer du système. retiré de sous eux. Vous pouvez les ajuster en conséquence, si vous souhaitez donner plus d'avertissements (par exemple, utilisez shutdown -h 60 et exécutez la commande à 2h00 du matin pour donner aux utilisateurs un avertissement généreux d'une heure).

Ceci est basé sur mon expérience passée; à un moment donné sera soyez connecté en travaillant quand l'entrée de crontab est lancée, et si elle redémarre sans prévenir, vous serez un panda très triste.

1
roadmr

Pourquoi voulez-vous - ou besoin faire cela? Bien que ce soit assez simple à faire, il existe sans doute une meilleure solution avec Linux qui ne nécessite 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 pourrons probablement vous aider à mieux.

0
Jack Knight