Come riavviare ogni 30 minuti automaticamente?


14

Vorrei programmare un riavvio del mio Ubuntu ogni 30 minuti. Esiste un comando o un modo grafico per farlo?


12
Sono solo curioso: quale potrebbe essere lo scopo di riavviare ogni 30 minuti?
Rafał Cieślak,

Risposte:


30

Il modo migliore per farlo dipenderà dal motivo per cui si desidera che Ubuntu si riavvii ogni mezz'ora.

Quindi ti consiglio di modificare la tua domanda per spiegare perché desideri farlo.

Riavvio ogni 30 minuti e avviso agli utenti prima di ogni riavvio:

Supponendo che le persone potrebbero utilizzare la macchina, localmente o in remoto, è meglio evitare di riavviare Ubuntu da sotto di loro senza alcun preavviso. Pertanto, piuttosto che pianificare il rebootcomando, raccomando di pianificare il shutdowncomando in modo da avvisare l'utente.

Per pianificare uno spegnimento ogni mezz'ora con un avviso 5 minuti prima, aggiungere questo a /etc/crontab:

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    shutdown -r +5

In realtà non è necessario aggiungere la prima linea, che è un commento. L'ho incluso per chiarezza - qualcosa di simile è già lì.

  • Ciò pianificherà il blocco del sistema per il riavvio ( -r) cinque minuti dopo +5l'esecuzione del comando ( ). Funziona ogni mezz'ora ( */30). Vedi man crone man 5 crontab.
  • Passa +5a qualcos'altro per modificare la durata degli utenti dopo essere stati avvisati del riavvio.
  • 0,30anche il minuto funzionerà, se lo preferisci. (Allo stesso modo, se fosse ogni 20 minuti, potresti scrivere */20o 0,20,40.)
  • Assicurarsi che /sbinsia nella PATHvariabile specificata nella parte superiore di /etc/crontab. Altrimenti, shutdown(sotto command) dovrà essere invocato come /sbin/shutdown.

Il comando verrà sempre eseguito sulla mezz'ora, se la macchina è attiva e funzionante in quel momento . Ciò farà sì che gli arresti vengano annunciati ogni mezz'ora ed eseguiti a 5 minuti e 35 minuti dopo l'ora.

  • Un vantaggio qui è che un amministratore può annullare l'arresto appena annunciato con sudo shutdown -c.
  • Se il computer è spento durante i periodi specifici in cui deve essere eseguito il comando pianificato, non verrà eseguito. Se ciò non è adeguato alle tue esigenze, dovrai pianificare i tuoi riavvii in modo diverso. (Questo non è specifico per l'uso di shutdownma si applicherebbe ugualmente se stavi programmando reboot.) In tal caso, modifica la domanda per spiegare le tue esigenze specifiche. (Lo consiglierei anacronper questo, ma i tuoi intervalli di tempo sono troppo brevi.)

Semplificare agli amministratori la prevenzione del riavvio automatico:

Potrebbe essere necessario configurarlo in modo che sia facile per un amministratore sospendere tutti i riavvii pianificati automaticamente:

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    [ -e /etc/noautoreboot ] || shutdown -r +5

Questa pianificazione si riavvia allo stesso modo - ogni mezz'ora, con un avviso di cinque minuti - tranne per il fatto che non pianificherà un riavvio se noautorebootesiste un file chiamato /etc.

  • Questo file di controllo può essere creato da un amministratore con:

    sudo touch /etc/noautoreboot
    
  • Può essere cancellato con:

    sudo rm /etc/noautoreboot
    
  • Nota che è importante che il file esista o meno , non ciò che contiene.

  • Se il riavvio è previsto e gli utenti sono avvertiti, quindi viene creato il file, si verificherà ancora il (immediatamente imminente) riavvio.

  • Come funziona? Utilizza un cortocircuito -evaluated o operatore ( ||) come abbreviazione di:

    Se /etc/noautoreboot non esiste, corri shutdown -r +5.

    Questa risposta spiega come il corto circuito ed e o gli operatori in grado di eseguire if- thenlogica. Per una spiegazione breve, intuitiva e altamente informale, puoi leggere il comando in questo modo:

    /etc/noautorebootesiste! Oppure, corri shutdown -r +5.

    Vedere man [per vedere come viene eseguito il test stesso.


12

Adoro farlo dicendo al Session Manager che vogliamo riavviare. Questo può essere fatto senza i permessi di root, e otteniamo una bella finestra che ci avverte che il sistema verrà riavviato, anche se potremo annullare il riavvio.

Il modo grafico - Metodo preferito

Installa gnome-scheduleda Ubuntu Software Center. Se non si desidera installare nulla di aggiuntivo, farlo nel modo terminale.

Apri gnome-scheduledal trattino, crea una nuova attività ripetuta e imposta queste opzioni:

  • Descrizione: Qualunque cosa tu voglia
  • Comando: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • Scegli X Application appena sotto il comando.
  • Ora e data, Avanzato:
    • Minuto: 0,30

Lascia le altre opzioni ai valori predefiniti. Clicca su Aggiungi .


The Terminal Way - Non è necessario software aggiuntivo

Esegui dal terminale:

crontab -e

Aggiungi questa riga:

0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot

Salva ed esci. Supponendo che si sta utilizzando nano(quella di default), premere Ctrl + O e Ctrl + x .

Nota che questo non funzionerà se il tuo DISPLAY è effettivamente diverso da :0, ed è per questo che questo metodo non è preferito. Ma, onestamente, se riavvii il computer ogni 30 minuti, il tuo DISPLAY probabilmente lo sarà sempre :0.

Non usi Gnome o Unity?

Entrambi i metodi spiegati sopra dipendono da alcuni componenti di Gnome, trovati sia sulle sessioni di Gnome che su Unity. Se vuoi farlo su altri ambienti (come KDE di Kubuntu, LXDE di Kubuntu ...) è meglio sostituire il comando con questo invece:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Ciò non richiederà conferma e si riavvierà immediatamente, ma funzionerà su tutti gli ambienti, presupponendo ovviamente che ConsoleKit non sia stato disinstallato manualmente.


6

Esegui sudo crontab -edalla riga di comando e aggiungi questa riga al file:

0,30 * * * * reboot

Questo dice al sistema di eseguire il comando rebootogni 30 minuti come root. Per una panoramica della sintassi temporale, consultare qui: http://linuxmoz.com/crontab-syntax-tutorial/


3
Questo non funzionerà, come rebootdeve essere eseguito come root, e questo lo aggiunge al crontab personale dell'utente, quindi funziona come quell'utente non root. (La stessa cosa con sudo rebootnon funzionerà anche perché sudoproverà a richiedere una password e fallirà.) /etc/crontabInvece dovrebbe essere usato per questo (si noti che la sua sintassi è leggermente diversa).
Eliah Kagan,

1
È possibile emettere sudo crontab -ee quindi creare una voce cron.
Tass

-3

Utilizzare cronper pianificare un lavoro ogni 30 minuti. Punta quel lavoro su uno script di shell che ha semplicemente

reboot

dentro.

Dato che cronfunziona come root, non dovresti fare nulla di speciale in termini di autorizzazioni.

Aggiornare

Sì, infatti, mai su nessuno dei miei sistemi consento crontab basati sull'utente (Esistono modi migliori per consentire agli utenti di eseguire attività pianificate a livello di utente) cron è stato progettato fin dall'inizio solo per l'automazione del sistema e non per gli utenti a pianificare un normale compiti. Cose come le rotazioni dei tronchi (che succede ancora oggi)

Il riavvio DEVE essere eseguito come root per funzionare correttamente, l'alternativa è impostare il suo bit appiccicoso, in modo che quando viene eseguito come utente normale in realtà viene eseguito come root e funzioni come previsto, ma nel fare ciò si apre quindi il server per consentire regolarmente gli utenti a riavviarlo a piacimento.

Potresti anche automatizzare una chiamata a SUDO, ma ho bisogno di scavare in quella, non sono sicuro di poter automatizzare la necessità di una password con SUDO (non la uso spesso, preferisco semplicemente passare direttamente alla radice shell usando SU)

Se lo configuri in crontab a livello di sistema, tutto viene eseguito come root, quindi la mia affermazione è accurata (ho appena trascurato di menzionare che dovrebbe essere usato quello a livello di sistema)

Per quanto riguarda la tua domanda "Perché avvolgerlo in una sceneggiatura?" Beh perchè no? Se l'OP lo inserisce in uno script di shell, in futuro a un certo punto dovrà aggiungerlo, semplicemente aggiunge allo script, invece di aprire crontab per individuare il lavoro, rimuoverlo, sostituirlo con uno script di shell, quindi scrivi una sceneggiatura con il vecchio + nuovo in.

Oltre 20 anni come amministratore / sviluppatore di sistemi che lavorano con sistemi fin da Ultrix / Solaris e persino VAX mi hanno insegnato un punto importante.

Se riesci a renderlo più facile all'inizio, allora rimane facile per la sua vita.

Davvero non ho questo atteggiamento "minimalista" che hanno molti amministratori di sistema moderni, in cui fare il meno possibile è la chiave del successo. La maggior parte dei server in questi giorni è facilmente 20 volte + più potente di qualsiasi cosa io abbia mai iniziato, e questo tipo di scenario (Wrapping in script di shell) è stato raccomandato pratica allora, quindi non c'è davvero alcun argomento per non farlo ora.

A meno che tu non voglia davvero andare su Unix / Linux hardcore, nel qual caso taggalo tutto sulla voce cron e collega tutto nel modo in cui dovrebbe essere fatto :-)

Tuttavia, sto divagando, e capisco anche che molti ragazzi in questi giorni vengono gettati nel profondo e mi hanno detto di far funzionare le cose, in quanto tali non hanno il tempo (e di solito l'inclinazione) di sedersi e conoscere nuove tecniche (o vecchio in questo caso) o addirittura vuoi giocare con queste cose al di fuori del lavoro.

Personalmente, ho un solo server tra quelli che eseguo che è dedicato esclusivamente per me su cui giocare, quindi posso testare cose come questa ... che è meglio A o B, quindi non è senza motivo che io consiglio di Questo.


Vedi il mio aggiornamento .. puoi darmi il mio 1 punto indietro ora se lo desideri ;-)
shawty

Riprova ... sii paziente ...
Shawty

2
Ora questa non è più una risposta! (Inoltre, stai confondendo il bit appiccicoso e il bit setuid .)
Eliah Kagan

Sì, è una risposta, l'ho digitata, aggiunta come una risposta, quindi è una risposta !!!
shawty
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.