GNU/Linux >> Linux Esercitazione >  >> Linux

Come spegnere Linux a una data e ora specifica dal terminale?

Puoi farlo direttamente dal shutdown command , vedi man shutdown :

SYNOPSIS
   /sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]

[...]

   time   When to shutdown.

Quindi, ad esempio:

shutdown -h 21:45

Verrà eseguito shutdown -h alle 21:45.

Per i comandi che non offrono questa funzionalità, puoi provare uno di:

R. Usando a

Il at daemon è progettato proprio per questo. A seconda del sistema operativo, potrebbe essere necessario installarlo. Sui sistemi basati su Debian, questo può essere fatto con:

sudo apt-get install at

Ci sono tre modi per dare un comando a at :

  1. Pipalo:

    $ echo "ls > a.txt" | at now + 1 min
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  2. Salva il comando che vuoi eseguire in un file di testo, quindi passa quel file a at :

    $ echo "ls > a.txt" > cmd.txt
    $ at now + 1 min < cmd.txt
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  3. Puoi anche passare at comandi da STDIN:

    $ at now + 1 min
    warning: commands will be executed using /bin/sh
    at> ls
    

    Quindi, premi Ctrl D per uscire dal at guscio. L'ls comando verrà eseguito in un minuto.

Puoi fornire orari molto precisi nel formato [[CC]YY]MMDDhhmm[.ss] , come in

$ at -t 201403142134.12 < script.sh

Questo eseguirà lo script script.sh alle 21:34 e 12 secondi del 14 marzo 2014.

B. Usare cron (anche se non è una buona idea per l'arresto)

L'altro approccio è usare il cron scheduler progettato per eseguire attività in orari specifici. Di solito viene utilizzato per attività che verranno ripetute, ma puoi anche indicare un tempo specifico. Ogni utente ha i propri "crontab" che controllano quali lavori vengono eseguiti e quando. Il formato generale di un crontab è:

*     *     *     *     *  command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

Quindi, ad esempio, questo eseguirà ls tutti i giorni alle 14:04:

04 14 * * * ls

Per impostare un cronjob per una data specifica:

  1. Crea un nuovo crontab eseguendo crontab -e . Questo farà apparire una finestra del tuo editor di testo preferito.

  2. Aggiungi questa riga al file appena aperto. Questo particolare esempio verrà eseguito alle 14:34 del 15 marzo 2014 se quel giorno è un venerdì (quindi, OK, potrebbe essere eseguito più di una volta):

    34 14 15 5  /path/to/command        
    
  3. Salva il file ed esci dall'editor.

Questa risposta SO suggerisce un modo per eseguirlo solo una volta, ma non l'ho mai usato, quindi non posso garantirlo.


No, non puoi specificare una data al comando shutdown ma esistono due alternative:

1) Il più semplice è usare il comando at. L'esempio seguente eseguirà shutdown +5 a un'ora e un giorno specifici:

echo "shutdown +5" | at 10:05am 2019-01-19

2) se non ti dispiace usare la tua calcolatrice e vuoi spegnere in diciamo 24 ore (24*60=1440 minuti) e sei assolutamente sicuro che il sistema non si riavvierà nel mezzo:

shutdown -r +1440

Spegnerà il tuo sistema alle 12:00 :

$ sudo shutdown -h 12:00

Opzioni:

-h, -P, --poweroff

Spegni la macchina.

-r, --reboot

Riavvia la macchina.

-c

Annulla uno spegnimento in attesa.


Linux
  1. Come cercare nel Web da terminale su Linux

  2. Come cancellare un comando specifico dalla cronologia di Bash in Linux

  3. Come escludere directory specifiche dalla copia in Linux

  4. Come spegnere o riavviare Linux

  5. Come posso eliminare le cartelle usando regex dal terminale Linux

Come riavviare (riavviare) Linux dalla riga di comando

Come utilizzare il terminale Linux in Android

Come aprire una finestra di un terminale Linux

Come utilizzare il comando di arresto di Linux

Come aprire un PDF in un terminale Linux

Come connettersi al WiFi dal terminale in Ubuntu Linux