Відповіді:
at 18:00 shutdown now
створює завдання "at", яке виконується у визначений час at
демоном або, можливо, cron
демоном, залежно від вашої системи.
shutdown 18:00
запускає процес у вашій оболонці, який чекає вказаного часу, а потім виконує відключення. Ця команда може бути припинена, якщо, наприклад, ваш сеанс оболонки припинено.
Чистий результат у більшості випадків буде однаковим: система вимикається о 18:00.
Одна відмінність полягає в тому, що якщо ви використовуєте at
, завдання буде зберігатися, і якщо система буде відключена якимось іншим способом до 18:00, після повторного завантаження робота все ще буде чекати запуску; якщо час уже минув, відключення буде здійснено негайно, що може бути зовсім несподіваним.
Ще одна відмінність полягає в тому, що shutdown 18:00
ви створите /run/nologin
файл за 5 хвилин до запланованого часу, щоб люди не входили після цього моменту. Також будуть надсилатися широкомовні повідомлення, щоб попередити користувачів, які увійшли до системи, що система збирається вимкнутись.
Потрібно врахувати ці відмінності, щоб вирішити, що використовувати.
nohup
або disown
або що - то, якщо виходити з системи зазвичай вбиваєш працюєте фонові процеси. Для цього різні системи можуть мати різні за замовчуванням. (Я припускаю, що насправді sudo shutdown
процес все ще працює, скоріше він просто сигналізує init
про запуск таймера відключення. Останнім може бути те, що відбувається, але останнім часом я не перевіряв це. О, але @JdeBP має; )
at
так, щоб він працював через, cron
а не atd
?
Якщо у вас CentOS 7, у вас є системна операційна система, і відповідь відрізняється.
at 18:00 shutdown now
все ще розклади через at
підсистему, але ця shutdown
команда, як і та, з якою ви безпосередньо звертаєтесь shutdown 18:00
, відрізняється. Це насправді systemctl
програма systemd . systemctl
все робить інакше.
Перш за все, systemctl
відправляє запланований запит на вимкнення, щоб його обробляти dæmon, майже як у at
випадку. Це, зокрема, системний dæmon logind
( systemd-shutdownd
dæmon був вилучений з systemd у травні 2015 року, яка зміна проникла через більш пізні незначні версії CentOS 7), а не at
підсистема. systemctl
повідомляє внутрішній протокол до брокера настільних автобусів (на всій системі), з яким спілкується logind
.
Таким чином, як і у at
випадку, там немає жодного shutdown
процесу, який відраховує та нерестує wall
повідомлення. Таким чином, можна вийти, і це не вплине на графік, а скасування не є таким простим, як просто переривання / вбивство переднього плану сеансу входу. Так само, як і з at
.
Ще є повідомлення, на відміну від at
випадку, але вони видаються logind
. Також на відміну від at
випадку, заплановане завдання не зберігається під час перезавантаження системи, тому фактичне відключення скасовує заплановане. У файловій системі є файл, але він знаходиться під /run/systemd/shutdown
яким нестабільне зберігання.
Подальші відмінності полягають у тому, що одночасно може бути лише одне заплановане відключення, тоді як можна подавати кілька at
завдань, і Policy Kit застосовуватиме правила для shutdown
запуску в контексті сеансу без входу як at
завдання, яке відрізняється від правил, застосованих для shutdown
запуску в контекст сеансу входу. Останні можуть бути більш дозволеними, дозволяючи (скажімо) непривілейованому користувачеві, який увійшов до активного сеансу входу, щоб вимкнути систему.
shutdown 18:00
запускає процес у вашій оболонці, який чекає". Що робити, якщо ви вийдете раніше?