Réponses:
at 18:00 shutdown now
crée un travail "at", qui est exécuté à l'heure spécifiée par le at
démon ou peut-être le cron
démon, selon votre système.
shutdown 18:00
démarre un processus dans votre shell qui attend l'heure spécifiée, puis effectue l'arrêt. Cette commande peut être interrompue si, par exemple, votre session shell est terminée.
Le résultat net dans la plupart des cas sera le même: le système est arrêté à 18h00.
Une différence est que si vous utilisez at
, le travail sera stocké et si le système est arrêté par un autre moyen avant 18h00, au redémarrage, le travail attendra toujours d'être exécuté; si le temps est déjà écoulé, l'arrêt sera effectué immédiatement, ce qui pourrait être tout à fait inattendu.
Une autre différence est que shutdown 18:00
cela créera un /run/nologin
fichier 5 minutes avant l'heure prévue pour empêcher les gens de se connecter après ce moment. Des messages diffusés seront également envoyés pour avertir les utilisateurs connectés que le système est sur le point d'être arrêté.
Vous devez tenir compte de ces différences pour décider lequel utiliser.
nohup
ou disown
autre chose, si la déconnexion tue normalement les processus d'arrière-plan en cours d'exécution . Différents systèmes peuvent avoir des valeurs par défaut différentes pour cela. (Je suppose qu'il y a vraiment un sudo shutdown
processus en cours d'exécution, plutôt qu'il signale simplement le init
démarrage d'une minuterie d'arrêt. Ce dernier pourrait en fait être ce qui se passe, mais je n'ai pas vérifié récemment. Oh, mais @JdeBP l'a fait; voyez cette réponse )
at
que cela fonctionne via cron
au lieu de atd
?
Si vous avez CentOS 7, vous avez un système d'exploitation systemd et la réponse est différente.
at 18:00 shutdown now
planifie toujours via le at
sous - système, mais cette shutdown
commande, ainsi que celle avec laquelle vous invoquez directement shutdown 18:00
, est différente. C'est en fait le systemctl
programme de systemd . systemctl
fait les choses différemment.
Tout d'abord, systemctl
envoie la demande d'arrêt planifié pour qu'elle soit traitée par un démon, un peu comme dans le at
cas. Il s'agit d'un dæmon systemd, cependant, spécifiquement logind
(le systemd-shutdownd
dæmon ayant été supprimé de systemd en mai 2015, dont le changement s'est depuis infiltré dans les versions mineures ultérieures de CentOS 7), pas du at
sous - système. systemctl
communique un protocole interne à un courtier de bus de bureau (à l'échelle du système) qui à son tour communique avec logind
.
Donc, comme dans le at
cas, il n'y a pas de shutdown
processus de décompte et de génération des wall
messages. Ainsi, on peut se déconnecter et cela n'affectera pas le calendrier, et l'annulation n'est pas aussi simple que simplement interrompre / tuer le processus de premier plan de la session de connexion. Comme avec at
.
Il y a toujours des messages, contrairement au at
cas, mais ils sont émis par logind
. Contrairement au at
cas, le travail planifié ne persiste pas lors des redémarrages du système, donc un arrêt réel annule un travail planifié. Il y a un fichier dans le système de fichiers, mais il est sous /run/systemd/shutdown
lequel se trouve un stockage non persistant.
D'autres différences sont qu'il ne peut y avoir qu'un seul arrêt planifié à la fois, alors que l'on peut soumettre plusieurs at
travaux, et Policy Kit appliquera les règles à shutdown
exécuter dans un contexte de non-session de connexion en tant que at
travail différent des règles appliquées pour shutdown
s'exécuter dans contexte de session de connexion. Ce dernier peut être plus permissif, permettant (par exemple) à un utilisateur non privilégié connecté à la session de connexion active de fermer le système.
shutdown 18:00
msgstr " démarre un processus dans votre shell qui attend". Et si vous vous déconnectez avant cela?