В чем разница между отключением 18:00 и отключением в 18:00?

30

at 18:00 shutdown nowи shutdown 18:00они запускают один и тот же сервис? Они работают одинаково?

янь
источник

Ответы:

48

at 18:00 shutdown nowсоздает задание «at», которое выполняется в указанное время atдемоном или, возможно, cronдемоном, в зависимости от вашей системы.

shutdown 18:00запускает процесс в вашей оболочке, который ждет до указанного времени, а затем выполняет выключение. Эта команда может быть прервана, если, например, ваш сеанс оболочки завершен.

Чистый результат в большинстве случаев будет таким же: система выключится в 18:00.

Одно из отличий состоит в том, что если вы используете at, задание будет сохранено, и если система будет отключена каким-либо другим способом до 18:00, при повторной загрузке задание все еще будет ожидать запуска; если время уже прошло, отключение будет выполнено немедленно, что может быть довольно неожиданным.

Другое отличие состоит в том shutdown 18:00, что /run/nologinфайл будет создан за 5 минут до запланированного времени, чтобы люди не могли войти в систему после этого момента. Также будут отправлены широковещательные сообщения, чтобы предупредить зарегистрированных пользователей о том, что система собирается быть выключена.

Вы должны принять во внимание эти различия, чтобы решить, какой использовать.

wurtel
источник
1
shutdown 18:00msgstr " запускает процесс в вашей оболочке, который ждет". Что если вы выйдете из системы раньше?
RonJohn
1
@RonJohn: Тогда это зависит , если вы использовали nohupили disownили что - то, если выходить из системы обычно убиваешь работаете фоновые процессы. Различные системы могут иметь разные значения по умолчанию для этого. (Я предполагаю, что на самом деле sudo shutdownпроцесс все еще выполняется, скорее он просто сигнализирует initо запуске таймера выключения. Последнее может действительно быть тем, что происходит, но я недавно не проверял. О, но @JdeBP имеет; посмотрите этот ответ )
Питер Кордес
Реально ли настроить atтак, чтобы cronвместо atd?
Тердон
3
Там модератор бриллиант, который не читал, как спросить . (-: вы найдете, что этот вопрос был задан четыре года назад на unix.stackexchange.com/questions/147643 .
JdeBP
«Также будут отправлены широковещательные сообщения, чтобы предупредить зарегистрированных пользователей о том, что система собирается быть выключена». Я бы сказал, что это самое важное различие в серверах, где много пользователей, я бы выделил это больше в этом ответе.
JiK
23

А теперь системный ответ.

Если у вас CentOS 7, у вас есть операционная система systemd, и ответ будет другим.

at 18:00 shutdown nowвсе еще планирует через atподсистему, но эта shutdownкоманда, как и та, с которой вы вызываете напрямую shutdown 18:00, отличается. Это на самом деле systemctlпрограмма systemd . systemctlделает вещи по-другому.

Прежде всего, systemctlотправляет запрос на отключение по расписанию для обработки демоном, как и в atслучае. Тем не менее, logindэто systemd-shutdowndсистемный демон (в частности, демон был удален из systemd в мае 2015 года, с тех пор это изменение было перенесено в более поздние минорные версии CentOS 7), а не atподсистема. systemctlговорит по внутреннему протоколу (общесистемному) брокеру Desktop Bus, который в свою очередь связывается с logind.

Так что, как и в atслучае, там нет никакого shutdownпроцесса, сидящего там, считающего и порождающего wallсообщения. Таким образом, можно выйти из системы, и это не повлияет на расписание, и отмена не так проста, как простое прерывание / уничтожение процесса переднего плана сеанса входа в систему. Прямо как с at.

Есть еще сообщения, в отличие от atслучая, но они выдаются logind. Также, в отличие от atслучая, запланированное задание не сохраняется при перезагрузках системы, поэтому фактическое отключение отменяет запланированное. Там есть файл в файловой системе, но при /run/systemd/shutdownкоторых не является постоянной памятью.

Дальнейшие различия заключаются в том, что может быть только одно запланированное отключение за раз, тогда как можно отправить несколько atзаданий, и Policy Kit будет применять правила для shutdownзапуска в контексте без входа в систему в качестве atзадания, которые отличаются от правил, применяемых для shutdownзапуска в контекст сеанса входа в систему. Последний может быть более разрешающим, позволяя (скажем) непривилегированному пользователю, который вошел в систему в сеансе активного входа в систему, завершить работу системы.

дальнейшее чтение

JdeBP
источник