web-dev-qa-db-fra.com

Comment redémarrer toutes les 30 minutes automatiquement?

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?

13
user123498

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.

Redémarrage toutes les 30 minutes et avertissant les utilisateurs avant chaque redémarrage:

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à.

  • Ceci planifiera la coupure du système pour le redémarrage (-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.
  • Remplacez +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.)
  • Assurez-vous que /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.

  • L’un des avantages ici est qu’un administrateur peut annuler l’arrêt qui vient d’être annoncé avec Sudo shutdown -c.
  • Si l'ordinateur est en panne à certaines heures précises pour l'exécution de la commande planifiée, il ne s'exécutera pas. Si cela ne vous convient pas, vous devrez programmer vos redémarrages différemment. (Ceci n'est pas spécifique à l'utilisation de 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.)

Il est plus facile pour les administrateurs d’empêcher les redémarrages automatiques:

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écutez shutdown -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écutez shutdown -r +5.

    Voir man [ pour voir comment le test lui-même est effectué.

28
Eliah Kagan

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.

La manière graphique - Méthode préférée

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:

  • Description: Tout ce que vous voulez
  • Commande: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • Choisissez Application X juste en dessous de la commande.
  • Heure et date, avancées:
    • Minute: 0,30

Laissez les autres options à leurs valeurs par défaut. Cliquez sur Ajouter.


The Terminal Way - Pas besoin de logiciel supplémentaire

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.

Ne pas utiliser Gnome ou Unity?

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.

12

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/

6
Kevin Chen