Risposte:
Puoi farlo direttamente dal shutdown command
, vedi man shutdown
:
SYNOPSIS
/sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]
[...]
time When to shutdown.
Quindi, per esempio:
shutdown -h 21:45
Che funzionerà shutdown -h
alle 21:45.
Per i comandi che non offrono questa funzionalità, puoi provare uno di:
Il at
demone è 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
Esistono tre modi per dare un comando a at
:
Pipe it:
$ 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
Salvare il comando che si desidera eseguire in un file di testo, quindi passare 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 i at
comandi da STDIN:
$ at now + 1 min
warning: commands will be executed using /bin/sh
at> ls
Quindi, premere CtrlDper uscire dalla at
shell. Il ls
comando verrà eseguito tra un minuto.
Puoi dare tempi molto precisi nel formato di [[CC]YY]MMDDhhmm[.ss]
, come in
$ at -t 201403142134.12 < script.sh
Questo eseguirà lo script script.sh
alle 21:34 e 12 secondi il 14 marzo 2014.
L'altro approccio sta utilizzando lo cron
scheduler progettato per eseguire attività in momenti specifici. Di solito viene utilizzato per le attività che verranno ripetute, ma è anche possibile assegnare un orario 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 verrà eseguito ls
ogni giorno alle 14:04:
04 14 * * * ls
Per impostare un cronjob per una data specifica:
Crea un nuovo crontab eseguendo crontab -e
. Verrà visualizzata una finestra del tuo editor di testo preferito.
Aggiungi questa riga al file appena aperto. Questo esempio particolare 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
Salvare il file ed uscire dall'editor.
Questa risposta SO suggerisce un modo per farlo funzionare solo una volta ma non l'ho mai usato, quindi non posso garantirlo.
shutdown
. Mi sento per quella brutta esperienza, che non avrebbe potuto essere piacevole.
shutdown
pianificazione e cron
nella stessa risposta ... Sia che si tratti di una workstation o di un server di posta di 1000 utenti (la mia triste esperienza) è più sulle conseguenze di una cattiva abitudine.
shutdown
, non si dovrebbe includere cron
. (specialmente con qualcuno che non saprà perché è un'idea orribile.)
No, non è possibile specificare una data al comando di arresto, ma esistono due alternative:
1) Il più semplice è usare il comando at . L'esempio seguente verrà eseguito 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 24 ore (24 * 60 = 1440 minuti) e sei assolutamente sicuro che il sistema non si riavvierà tra:
shutdown -r +1440
at
comando.
at
non meriti alcuna spiegazione. Posso vederti credere diversamente. Menti diverse, opinioni diverse.
shutdown
non consentono una specifica della data. Ma il set di strumenti di nosh shutdown
fa, supportando la sintassi BSD di vecchia data.
Arresterà il sistema alle 12:00:
$ sudo shutdown -h 12:00
Opzioni:
-h, -P, --poweroff
Spegnere la macchina.
-r, --reboot
Riavvia la macchina.
-c
Annulla uno spegnimento in sospeso.