Vous pouvez le faire directement depuis le shutdown command
, voir man shutdown
:
SYNOPSIS
/sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]
[...]
time When to shutdown.
Ainsi, par exemple :
shutdown -h 21:45
Cela exécutera shutdown -h
à 21h45.
Pour les commandes qui n'offrent pas cette fonctionnalité, vous pouvez essayer l'une des options :
A. Utilisation à
Le at
démon est conçu précisément pour cela. Selon votre système d'exploitation, vous devrez peut-être l'installer. Sur les systèmes basés sur Debian, cela peut être fait avec :
sudo apt-get install at
Il y a trois façons de donner une commande à at
:
-
Pipez-le :
$ 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
-
Enregistrez la commande que vous souhaitez exécuter dans un fichier texte, puis transmettez ce fichier à
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
-
Vous pouvez également passer
at
commandes depuis STDIN :$ at now + 1 min warning: commands will be executed using /bin/sh at> ls
Ensuite, appuyez sur Ctrl D pour sortir du
at
coquille. Lels
La commande sera exécutée dans une minute.
Vous pouvez donner des heures très précises au format [[CC]YY]MMDDhhmm[.ss]
, comme dans
$ at -t 201403142134.12 < script.sh
Cela exécutera le script script.sh
à 21h34 et 12 secondes le 14 mars 2014.
B. Utiliser cron (bien que ce ne soit pas une bonne idée pour l'arrêt)
L'autre approche utilise le cron
planificateur qui est conçu pour effectuer des tâches à des moments précis. Il est généralement utilisé pour les tâches qui seront répétées mais vous pouvez également donner un temps précis. Chaque utilisateur a ses propres "crontabs" qui contrôlent quelles tâches sont exécutées et quand. Le format général d'une crontab est :
* * * * * 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)
Ainsi, par exemple, cela exécutera ls
tous les jours à 14h04 :
04 14 * * * ls
Pour configurer un cronjob pour une date spécifique :
-
Créez une nouvelle crontab en exécutant
crontab -e
. Cela fera apparaître une fenêtre de votre éditeur de texte préféré. -
Ajoutez cette ligne au fichier qui vient de s'ouvrir. Cet exemple particulier s'exécutera à 14h34 le 15 mars 2014 si ce jour est un vendredi (donc, d'accord, il peut s'exécuter plus d'une fois) :
34 14 15 5 /path/to/command
-
Enregistrez le fichier et quittez l'éditeur.
Cette réponse SO suggère un moyen de le faire fonctionner une seule fois, mais je ne l'ai jamais utilisé, donc je ne peux pas en garantir.
Non, vous ne pouvez pas spécifier de date à la commande shutdown mais deux alternatives existent :
1) Le plus simple est d'utiliser la commande at. L'exemple suivant exécutera shutdown +5
à une heure et un jour précis :
echo "shutdown +5" | at 10:05am 2019-01-19
2) si cela ne vous dérange pas d'utiliser votre calculatrice et que vous voulez vous arrêter dans disons 24 heures (24*60=1440 minutes) et que vous êtes absolument sûr que le système ne redémarrera pas entre-temps :
shutdown -r +1440
Il éteindra votre système à 12h00 :
$ sudo shutdown -h 12:00
Choix :
-h, -P, --poweroff
Éteignez la machine.
-r, --reboot
Redémarrez la machine.
-c
Annuler un arrêt en attente.