Comment puis-je planifier un redémarrage nocturne?

81

J'ai des problèmes périodiques avec une application particulière, XBMC. Si j'utilise régulièrement XBMC, il ne semble pas y avoir de problèmes, mais si je le laisse sans surveillance pendant plus de 12 heures, il faut que je redémarre pour que tout fonctionne à nouveau.

Je sais qu'un redémarrage prévu n'est PAS la solution, mais jusqu'à ce que je puisse résoudre le problème, je dois planifier un redémarrage chaque matin pour que ma femme puisse l'utiliser si je ne suis pas là et que rien ne se jette à la fenêtre :)

N'importe quels preneurs?

Braiam
la source

Réponses:

134

J'utiliserais cron (devrait déjà être installé):

Edit crontab:

sudo crontab -e

La première fois que vous devrez peut-être choisir votre éditeur préféré (comme nano)

Insérer une ligne comme

0 4   *   *   *    /sbin/shutdown -r +5

au fond. Explication:

m      h    dom        mon   dow       command
minute hour dayOfMonth Month dayOfWeek commandToRun

donc la ligne

  0 4   *   *   *    /sbin/shutdown -r +5

redémarrerait votre système tous les jours à 4h05. (4:00 am + 5 minutes)

Ctrl+ X, Y, EnterDevrait vous sortir de crontab (si vous utilisez nano)

Remarque: vous devrez peut-être vous lancer en crontab -etant que root car l'arrêt nécessite root. crontab -eouvre un fichier dans / tmp à la place de la crontab réelle afin qu'il puisse vérifier votre nouvelle crontab à la recherche d'erreurs. S'il n'y a pas d'erreur, votre crontab sera mise à jour.

sBlatt
la source
1
Merci pour l'info. La seule chose à faire était de changer la commande en / sbin / shutdown pour que cela fonctionne pour moi.
1
cela n'a pas fonctionné pour moi. utiliser les deux crontab -eet sudo crontab -eenregistre le fichier dans un emplacement temporaire lorsque vous allez quitter (par exemple, /tmp/crontab.Y88XQl/crontab) et que la tâche ne s'exécute pas. j'ai été forcé de modifier / etc / crontab directement
wal
@wal "crontab -e ouvre un fichier dans / tmp au lieu de la crontab réelle afin qu'il puisse vérifier votre nouvelle crontab à la recherche d'erreurs et vous empêcher de remplacer votre crontab réelle par ces erreurs. S'il n'y a aucune erreur, votre crontab réelle être mis à jour. " unix.stackexchange.com/questions/197504/…
Christh le
14

Ajouter ceci /etc/cron.daily/zz-rebootdevrait fonctionner:

#!/bin/sh
shutdown -r now

Et sudo chmod a+x /etc/cron.daily/zz-reboot. Le préfixe "zz" le forcera à s'exécuter en dernier lieu parmi tous les autres scripts de ce répertoire. Vérifiez /etc/crontabpour voir à quelle heure de la journée il se passera réellement:

grep daily /etc/crontab | awk '{print $2 ":" $1}'

Si cela ne fonctionne pas, alors une entrée cron "normale" peut aussi fonctionner, via sudo crontab -e

MINUTE HOUR * * * shutdown -r now

Enfin, si vous souhaitez effectuer des redémarrages ponctuels, vous pouvez utiliser at:

echo "shutdown -r now" | sudo at 04:30
Kees Cook
la source
autant que je sache, cela redémarrera votre système à la même heure que vous avez créé ce fichier tous les jours, corrigez-moi si je me trompe
sBlatt
1
Pas tout à fait: il redémarre une fois par jour à l’heure prévue par cron.daily, ce qui est un peu imprévisible. Si vous ne l'avez pas anacroninstallé, il est 18h25 heure locale, ce qui pourrait vous convenir (ou même horrible si vous êtes un lève-tôt). Si vous le faites, ce qui est le cas par défaut, cela pourrait bien être 10 minutes après la première mise sous tension de la machine chaque jour, ce qui serait exaspérant. En tout cas, ce cron.dailyn’est pas un bon choix pour cela.
poolie
cron.daily courir tous les soirs à 6:25 sur mon système. Cela est généralement réglé à une minute aléatoire entre 06:00 et 06:59. Consultez votre / etc / crontab pour
connaître
1
Le plus gros problème lié à l’utilisation de cron.daily dans ce domaine est qu’elle pourrait interférer avec d’autres tâches dans cron.daily.
Elzapp
1

Vous devriez créer un script en suivant les instructions données par Kees Cook ...

Vous pouvez simplement copier et coller les informations ci-dessous dans n’importe quel éditeur de texte et créer le zz-rebootfichier dans le répertoire suggéré.

Ensuite, n'oubliez pas de cliquer avec le bouton droit sur le fichier et de lui attribuer une autorisation d'exécution. Si vous souhaitez utiliser un terminal, il suffit de:

sudo chmod +x /etc/cron.daily/zz-reboot

Pour mieux comprendre ce que vous faites, rappelez-vous que dans le /etcdossier, vous trouverez généralement des fichiers de configuration cron.hourly, cron.dailyainsi que d'autres dossiers cron. Cron se charge de l'exécution des applications et du script à un moment donné.

Si vous voulez être strict sur l'heure du redémarrage, il suffit de saisir

sudo crontab -e

afin que vous puissiez modifier le crontabpour l'utilisateur root.

Si vous préférez le faire graphiquement, vous pouvez installer depuis le Centre de logiciels gnome-schedule. Si vous souhaitez modifier l' gnome-scheduleutilisateur for root, assurez-vous de l'exécuter à partir du terminal:

gksudo gnome-schedule

Amusez-vous à jouer! :)

ps: excellent point sBlatt! Je me demandais s'il y avait un moyen de forcer le cron.dailytemps d'exécution manuellement.

Pitto
la source
Dans / etc / crontab, il existe une entrée permettant de régler l'heure, mais autant que je sache, si l'ordinateur est en panne à ce moment-là, il s'exécutera quelques minutes après le démarrage de l'ordinateur
sBlatt
1

Je travaille avec cronjobs depuis environ un mois. Mon travail consiste à planifier la mise hors tension et le redémarrage. C'est très simple. Je sais que cela a été demandé il y a environ 5 ans, mais si quelqu'un a encore des problèmes, vous pouvez utiliser cette méthode et vous serez configuré.

ouvrir le terminal (ctrl + t)

sudo nano /etc/crontab

faites défiler jusqu'en bas et entrez la commande ci-dessous

00 6 * * * root reboot 

ceci est programmé pour redémarrer à 6h tous les jours, et appuyez sur enter

Si vous souhaitez planifier une mise hors tension tous les jours à 23 heures, vous pouvez entrer

00 23 * * * root poweroff

J'ai encore besoin de savoir comment mettre en marche une machine en utilisant cronjob quand elle est en panne. Je vais modifier cette réponse une fois que je l'ai compris.

PS c'est ma toute première réponse sur n'importe quel formulaire; J'espère que ça aide quelqu'un !! :RÉ

techfashionista
la source
3
Il y a une réponse avec le même contenu d'il y a 5 ans avec plus de détails et une vérification automatique de la syntaxe (jusqu'au bout crontab -e).
David Foerster
1
Ne pas oublier de redémarrer cron:sudo /etc/init.d/cron restart
brcebn