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
:
-
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
-
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
-
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:
-
Crea un nuovo crontab eseguendo
crontab -e
. Questo farà apparire una finestra del tuo editor di testo preferito. -
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
-
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.