J'aimerais planifier un redémarrage de mon Ubuntu toutes les 30 minutes. Existe-t-il une commande ou un moyen graphique de le faire?
La meilleure façon de faire cela dépendra pourquoi vous voulez que Ubuntu redémarre toutes les demi-heures.
Je vous recommande donc de modifier votre question pour expliquer pourquoi vous souhaitez procéder ainsi.
En supposant que des personnes utilisent la machine, localement ou à distance, il est préférable d'éviter de redémarrer Ubuntu depuis leur ordinateur sans aucun avertissement. Par conséquent, plutôt que de planifier la commande reboot
, je vous recommande de planifier la commande shutdown
afin d’en avertir l’utilisateur.
Pour planifier un arrêt toutes les demi-heures avec un avertissement 5 minutes avant, ajoutez ceci à /etc/crontab
:
#minute hour mday month wday user command
*/30 * * * * root shutdown -r +5
Vous n'avez pas réellement besoin d'ajouter la première ligne, qui est un commentaire. Je l'ai inclus pour plus de clarté - quelque chose comme cela existe déjà.
-r
) cinq minutes après (+5
) l'exécution de la commande. Il fonctionne toutes les demi-heures (*/30
). Voir man cron
et man 5 crontab
.+5
par quelque chose d'autre pour changer la durée écoulée après que les utilisateurs soient avertis du redémarrage.0,30
sous minute fonctionnera également, si vous préférez. (De même, toutes les 20 minutes, vous pourriez écrire */20
ou 0,20,40
.)/sbin
est dans la variable PATH
spécifiée près du haut de /etc/crontab
. Sinon, shutdown
(sous command
) devra être appelé en tant que /sbin/shutdown
.La commande sera toujours exécutée à la demi-heure si la machine est en marche à ce moment-là . Ainsi, les arrêts seront annoncés toutes les demi-heures et effectués 5 heures et 35 minutes après l’heure.
Sudo shutdown -c
.shutdown
mais s'appliquerait également si vous planifiiez reboot
.) Dans ce cas, modifiez votre question pour expliquer vos besoins spécifiques. (Je recommanderais anacron
pour cela, mais vos intervalles de temps sont beaucoup trop courts.)Vous voudrez peut-être configurer cela de sorte qu'il soit facile pour un administrateur de suspendre tous les redémarrages programmés automatiquement:
#minute hour mday month wday user command
*/30 * * * * root [ -e /etc/noautoreboot ] || shutdown -r +5
Ce programme planifie le redémarrage de la même manière - toutes les demi-heures, avec un avertissement de cinq minutes - sauf qu'il ne planifie pas de redémarrage si un fichier appelé noautoreboot
existe dans /etc
.
Ce fichier de contrôle peut être créé par un administrateur avec:
Sudo touch /etc/noautoreboot
Il peut être supprimé avec:
Sudo rm /etc/noautoreboot
Notez que c'est si le fichier existe ou non , pas ce qu'il contient, c'est ce qui compte.
Si le redémarrage est planifié et que les utilisateurs sont avertis , puis le fichier est créé, le redémarrage (immédiatement imminent) aura toujours lieu.
Comment cela marche-t-il? Il utilise un opérateur court-circuit - évalué ou (||
) comme raccourci pour:
Si
/etc/noautoreboot
n'existe pas, exécutezshutdown -r +5
.
Cette réponse explique comment court-circuit et et ou Les opérateurs peuvent exécuter la logique if
-then
. Pour une explication brève, intuitive et très informelle, vous pouvez lire la commande de cette façon:
/etc/noautoreboot
existe! Ou exécutezshutdown -r +5
.
Voir man [
pour voir comment le test lui-même est effectué.
J'aime faire cela en disant au gestionnaire de session que nous voulons redémarrer. Cela peut être fait sans autorisations root, et nous obtenons une fenêtre Nice qui nous avertit que le système va être redémarré - même si nous pouvons annuler le redémarrage si nous le souhaitons.
Installez gnome-schedule
à partir du Centre de logiciel Ubuntu. Si vous ne souhaitez installer rien d’autre, faites-le à l’aide de Terminal Way.
Ouvrez gnome-schedule
à partir du tiret, créez une nouvelle tâche répétée et définissez les options suivantes:
dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Laissez les autres options à leurs valeurs par défaut. Cliquez sur Ajouter.
Courez depuis le terminal:
crontab -e
Ajouter cette ligne:
0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Enregistrer et quitter. En supposant que vous utilisez nano
(celui par défaut), appuyez sur Ctrl + o et Ctrl + x.
Veuillez noter que cela ne fonctionnera pas si votre DISPLAY est réellement différent de :0
, et c’est la raison pour laquelle cette méthode n’est pas recommandée. Mais honnêtement, si vous redémarrez votre ordinateur toutes les 30 minutes, votre AFFICHAGE sera probablement toujours :0
.
Les deux méthodes expliquées ci-dessus dépendent de certains composants de gnome, trouvés à la fois sur les sessions Gnome et sur Unity. Si vous voulez le faire sur d'autres environnements (tels que KDE de Kubuntu, LXDE de Kubuntu ...), remplacez la commande par celle-ci:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
Cela ne demandera pas de confirmation et redémarrera immédiatement, mais fonctionnera dans tous les environnements, si vous n'avez pas désinstallé manuellement ConsoleKit, bien sûr.
Exécutez Sudo crontab -e
à partir de la ligne de commande et ajoutez cette ligne au fichier:
0,30 * * * * reboot
Cela indique au système d'exécuter la commande reboot
toutes les 30 minutes en tant que root. Pour un aperçu de la syntaxe de l'heure, voir ici: http://linuxmoz.com/crontab-syntax-tutorial/