Come posso pianificare un riavvio notturno?


81

Sto riscontrando alcuni problemi periodici con una particolare applicazione, XBMC. Se uso XBMC regolarmente non sembro avere problemi, ma se lo lascio incustodito per più di circa 12 ore, devo riavviare per farlo funzionare di nuovo.

So che un riavvio programmato NON è la risposta, ma fino a quando non riesco a capire il problema, devo pianificare un riavvio ogni mattina in modo che mia moglie possa usarlo se sono via e non viene buttato fuori dalla finestra :)

Qualche acquirente?

Risposte:


133

Vorrei usare cron (dovrebbe essere già installato):

Modifica crontab:

sudo crontab -e

La prima volta che potresti dover scegliere il tuo editor preferito (come nano)

Inserisci una riga come

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

in fondo. Spiegazione:

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

così la linea

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

riavviare il sistema ogni giorno alle 4:05. (4:00 + 5 minuti)

Ctrl+ X, Y, EnterDovrebbe farti fuori crontab (se si utilizza nano)

Nota: potrebbe essere necessario eseguire crontab -ecome root, perché l'arresto ha bisogno di root. crontab -eapre un file in / tmp invece del vero crontab in modo che possa verificare la presenza di errori nel nuovo crontab. Se non ci sono errori, il tuo crontab effettivo verrà aggiornato.


1
Grazie per le informazioni. L'unica cosa che dovevo fare era cambiare il comando in / sbin / shutdown per farlo funzionare per me.

1
questo non ha funzionato per me. usando entrambi crontab -ee sudo crontab -esalva il file in una posizione temporanea quando si esce (es. /tmp/crontab.Y88XQl/crontab) e l'attività non viene eseguita. sono stato costretto a modificare direttamente / etc / crontab
wal

@wal "crontab -e apre un file in / tmp invece del vero crontab in modo che possa controllare il tuo nuovo crontab per errori e impedirti di sovrascrivere il tuo crontab effettivo con quegli errori. Se non ci sono errori, allora il tuo crontab effettivo essere aggiornato. " unix.stackexchange.com/questions/197504/…
Christh,

14

Aggiungendo questo a /etc/cron.daily/zz-rebootdovrebbe funzionare:

#!/bin/sh
shutdown -r now

E sudo chmod a+x /etc/cron.daily/zz-reboot. Il prefisso "zz" lo costringerà ad eseguire l'ultimo di tutti gli altri script in quella directory. Controlla /etc/crontaba che ora del giorno accadrà effettivamente:

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

Se non funziona, allora può funzionare anche una voce cron "normale", tramite sudo crontab -e

MINUTE HOUR * * * shutdown -r now

E infine, se vuoi fare solo riavvii una tantum, puoi usare at:

echo "shutdown -r now" | sudo at 04:30

per quanto ne so questo riavvierà il tuo sistema nello stesso momento in cui hai creato questo file ogni giorno, per favore correggimi se sbaglio
sBlatt

1
Non proprio: si riavvierà una volta al giorno in qualsiasi momento cron.daily viene eseguito, il che è un po 'imprevedibile. Se non hai anacroninstallato, sono le 06:25 ora locale, il che potrebbe andare bene (o potrebbe essere terribile se sei un mattiniero). Se lo fai, che credo sia l'impostazione predefinita, potrebbero essere necessari 10 minuti dopo l'accensione della macchina per la prima volta ogni giorno, il che sarebbe esasperante. Ad ogni modo, cron.dailynon è adatto a questo.
poolie,

cron.daily funziona ogni notte alle 6:25 sul mio sistema. Di solito è impostato su un minuto casuale tra le 06:00 e le 06:59. Vedi il tuo / etc / crontab per il tempo sul tuo sistema
elzapp,

1
Il problema più grande con l'uso di cron.daily per questo è che potrebbe interferire con altri lavori in cron.daily.
elzapp,

1

Dovresti creare uno script usando le indicazioni fornite da Kees Cook ...

Puoi semplicemente copiare e incollare le informazioni di seguito in qualsiasi editor di testo e creare il zz-rebootfile nella directory suggerita.

Dopodiché, ricordati di fare clic con il pulsante destro del mouse sul file e assegnargli il permesso di esecuzione. Se hai voglia di usare il terminale solo:

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

Per capire meglio cosa stai facendo, ricorda che nella /etccartella generalmente trovi i file di configurazione e lì puoi trovare cron.hourly, cron.dailye altre cartelle cron. Cron si occupa di eseguire applicazioni e script in un determinato momento.

Se vuoi essere rigoroso sul tempo di riavvio, basta digitare

sudo crontab -e

così puoi modificarlo crontabper l'utente root.

Se ti senti meglio a farlo graficamente, puoi installarlo dal Software Center gnome-schedule. Se si desidera modificare l' gnome-scheduleutente per root assicurarsi di eseguirlo dal terminale:

gksudo gnome-schedule

Divertiti a giocare! :)

ps: ottimo punto sBlatt! Mi chiedevo se c'è un modo per forzare cron.dailymanualmente i tempi di esecuzione.


In / etc / crontab c'è una voce per regolare l'ora, ma dopo, se il computer è spento in questo momento, verrà eseguito alcuni minuti dopo l'avvio del computer
sBlatt

1

Ho lavorato con cronjobs per circa un mese nel mio lavoro, pianificando lo spegnimento e il riavvio. È molto semplice. So che questo è stato chiesto circa 5 anni fa, ma se qualcuno ha ancora problemi, è possibile utilizzare questo metodo e verrà impostato.

apri il terminale (ctrl + T)

sudo nano /etc/crontab

scorrere fino in fondo e immettere il comando seguente

00 6 * * * root reboot 

questo è impostato per il riavvio alle 6:00 tutti i giorni e premere Invio

Se vuoi programmare lo spegnimento alle 23:00 tutti i giorni puoi entrare

00 23 * * * root poweroff

Devo ancora capire come accendere una macchina usando cronjob quando è inattivo. Modificherò questa risposta una volta che l'ho capito.

PS questa è la mia prima risposta in assoluto a pubblicare post su qualsiasi modulo; spero che aiuti qualcuno !! : D


3
C'è una risposta con lo stesso contenuto di 5 anni fa con maggiori dettagli e verifica automatica della sintassi (fino a crontab -e).
David Foerster,

1
Non dimenticare di riavviare cron:sudo /etc/init.d/cron restart
brcebn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.