Il semble que je puisse arrêter en utilisant Sudo shutdown
en spécifiant une heure ou des minutes.
Existe-t-il un moyen de spécifier datetime pour l'arrêt?
Vous pouvez le faire directement à partir du 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 s'exécutera shutdown -h
à 21h45.
Pour les commandes qui n'offrent pas cette fonctionnalité, vous pouvez essayer l'une des options suivantes:
Le démon at
est précisément conçu 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 existe trois façons de donner une commande à at
:
Tuyau:
$ 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 passez 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 des commandes at
à partir de STDIN:
$ at now + 1 min
warning: commands will be executed using /bin/sh
at> ls
Puis appuyez CtrlD pour quitter le shell at
. La commande ls
sera exécutée dans une minute.
Vous pouvez donner des heures très précises au format [[CC]YY]MMDDhhmm[.ss]
, un péché
$ at -t 201403142134.12 < script.sh
Cela exécutera le script script.sh
à 21h34 et 12 secondes le 14 mars 2014.
L'autre approche utilise le planificateur cron
qui est conçu pour effectuer des tâches à des moments spécifiques. Il est généralement utilisé pour des tâches qui seront répétées mais vous pouvez également donner un temps spécifique. Chaque utilisateur a ses propres "crontabs" qui contrôlent quels travaux sont exécutés et quand. Le format général d'un 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 s'exécutera ls
tous les jours à 14h04:
04 14 * * * ls
Pour configurer un cronjob pour une date spécifique:
Créez un nouveau 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, OK, il pourrait s'exécuter plusieurs fois):
34 14 15 5 /path/to/command
Enregistrez le fichier et quittez l'éditeur.
This SO suggère un moyen de le faire fonctionner une seule fois mais je ne l'ai jamais utilisé, je ne peux donc pas m'en porter garant.
Non, vous ne pouvez pas spécifier de date lors de la commande d'arrêt, 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 arrêter dans disons 24 heures (24 * 60 = 1440 minutes) et que vous êtes absolument sûr le système ne redémarrera pas entre:
shutdown -r +1440
Il arrêtera votre système à 12h00:
$ Sudo shutdown -h 12:00
Options:
-h, -P, --poweroff
Mettez la machine hors tension.
-r, --reboot
Redémarrez la machine.
-c
Annuler un arrêt en attente.