come posso pianificare un riavvio in Linux?


38

Sono nuovo in Linux e voglio programmare un riavvio a mezzanotte. Come dovrei farlo?

modifiche:

  • Mi dispiace di non aver inserito i dettagli completi. Voglio un riavvio ogni 3 ° sabato del mese alle 23:30.

  • Non so cosa c'è che non va, ma non riesco a trovare crontab. Quello che ho è cron.d; cron.daily; cron.weekly; cron.monthly;

Mi dispiace per la domanda noob. Mi aiuti. Grazie.


2
La vera domanda è perché vorresti farlo regolarmente, hai un'applicazione che perde o qualcosa del genere? Se stai pianificando riavvii regolari per risolvere un problema, probabilmente hai un problema più grande ...
JamesHannah,

1
Vuoi che si riavvii ogni notte?
Matt Simmons,

4
Non sto votando verso il basso, perché è una sorta di decisione politica (e penso che i riavvii notturni siano un po 'eccessivi), ma pianificare regolarmente i riavvii attraverso un'infrastruttura è un modo decente per garantire che le macchine abbiano kernel aggiornati e tutti i servizi in esecuzione sono patchati. Ho sentito un limite di uptime di 3 mesi come una buona via di mezzo.
Matt Simmons,

Se questo fosse un commento sulla domanda, piuttosto che una risposta, la voterei. In realtà cambierei idea, perché la domanda era ambigua sul fatto che si trattasse di una volta o di una cosa normale. :)
intuito il

3
/etc/crontabla voce come 30 23 15-21 * 6 /sbin/shutdown -r nowverrà riavviata alle 23:30 il 3 ° sabato di ogni mese.
Chris S,

Risposte:


45

Digita shutdown -r 0:00e si riavvierà a mezzanotte.

Se vuoi riavviare ogni notte, aggiungi una voce cron usando crontab -e come root per eseguire lo spegnimento -r ogni mezzanotte

@midnight shutdown -r now

3
Un argomento time è obbligatorio, è possibile utilizzare now.
Tobu,

No ... se vuole un comando una volta e vuole digitare il comando ora, dovrebbe aggiungere l'ora!
raggio

3
@No, ha bisogno di un argomento temporale come nownella riga crontab.
In pausa fino a nuovo avviso.

Sì, scusa, ho letto male il commento di Tobu e penso che abbia detto che 0:00 era inutile nel primo comando ... Ho modificato per correggere (e anche Massimo risponde)
raggio

Sarei interessato a sapere quali altre @{command}variabili sono disponibili.
Greg,

16

Usando crontab.

http://en.wikipedia.org/wiki/Crontab

Aggiungere questa voce a / etc / crontab dovrebbe fare:

0 0 * * * /sbin/shutdown -r now

3
shutdownnecessita di un argomento temporale comenow
In pausa fino a nuovo avviso.

1
Questo eseguirà il riavvio ogni notte. Non sono sicuro se questo è quello che vuole.
cstamas,

1
La domanda originale faceva sembrare che volesse riavviarlo ogni notte. Vuole davvero che venga riavviato ogni 3 ° sabato, il che sarebbe ancora più semplice con un crontab
Chris S,

non so cosa c'è che non va ma non riesco a trovare il crontab ..? quello che ho è il cron.d; cron.daily; cron.weekly; cron.monthly; Mi dispiace per la domanda noob.Pls mi aiuti. grazie
klauriens il

Dipende dalla distribuzione che stai usando, ma di solito dovresti trovare un file chiamato "crontab" nella directory / etc del tuo sistema. Dovresti anche essere in grado di esaminare l'attuale crontab usando il comando "crontab -l" e di modificarlo usando "crontab -e".
Massimo

13

Un'altra opzione è il comando at , disponibile su molte distribuzioni Linux. Vedi la pagina man per maggiori informazioni, ma la sintassi generale per il tuo scopo sarebbe:

echo "reboot" | alle 00:00 del 27 giugno

Per citare la pagina man di OS X:

at : esegue i comandi in un momento specifico

Sembra quello di cui stiamo parlando. ;)


1

Per quanto ne so, non è possibile utilizzare cron per pianificare attività per "l'ultimo venerdì di ogni mese" o "terzo giovedì di ogni mese". Quello che puoi fare, per quanto brutto sembri, è far eseguire uno script ogni sabato alle 23:30 e poi fare in modo che questo script determini se questo particolare sabato è il terzo sabato della settimana (può essere fatto usando i comandi date e forse cal) .

Spero che aiuti. Non ho trovato una soluzione elagante a questo problema. Ho trovato questo thread, perché stavo cercando una soluzione per lo stesso problema.


1
i commenti sopra di "30 23 15-21 * 6 / sbin / shutdown -r now" funzioneranno. Praticamente funzionerà solo la terza settimana del mese, ma solo quando è anche sabato
Sirex

Non penso che questa linea cron funzioni come pensi che faccia.
ervingsb

Ho creato le seguenti due righe: "30 23 1-7 * 4 date" e "30 23 1-7 * 3 date". Ieri sera ho ricevuto due mail che dicevano entrambe: "Mer 7 marzo 23:30:02 CET 2012"
ervingsb

l'ultimo campo corrisponde al giorno della settimana, con zero che è domenica. il 4 cronjob non avrebbe dovuto corrispondere un mercoledì.
Sirex,

Questo è ciò che intendevo. La regola che hai scritto non significa ciò che pensi significhi. Attiverà il lavoro ogni giorno per una settimana. Non importa il giorno della settimana.
ervingsb

0

1) dalla riga di comando digitare 2) una volta che sai dove si trova il riavvio (di solito / sbin / reboot) cd in una delle directory in /etc/cron.daily, /etc/cron.weekly, / etc / cron. oraria ecc ... cioèwhich reboot
cd /etc/cron.weekly

3) crea un file (usando nano o vim) chiamalo zzreboot e aggiungi le seguenti righe:

#! / bin / sh
/ sbin / reboot

Il motivo per cui si desidera chiamare il file zzwhatever è assicurarsi che sia l'ultimo lavoro chiamato dopo tutti gli altri lavori. Per essere sicuro, basta fare un ls -lnella directory e verificare che sia l'ultimo file.

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.