at 18:00 shutdown now
и shutdown 18:00
они запускают один и тот же сервис? Они работают одинаково?
at 18:00 shutdown now
создает задание «at», которое выполняется в указанное время at
демоном или, возможно, cron
демоном, в зависимости от вашей системы.
shutdown 18:00
запускает процесс в вашей оболочке, который ждет до указанного времени, а затем выполняет выключение. Эта команда может быть прервана, если, например, ваш сеанс оболочки завершен.
Чистый результат в большинстве случаев будет таким же: система выключится в 18:00.
Одно из отличий состоит в том, что если вы используете at
, задание будет сохранено, и если система будет отключена каким-либо другим способом до 18:00, при повторной загрузке задание все еще будет ожидать запуска; если время уже прошло, отключение будет выполнено немедленно, что может быть довольно неожиданным.
Другое отличие состоит в том shutdown 18:00
, что /run/nologin
файл будет создан за 5 минут до запланированного времени, чтобы люди не могли войти в систему после этого момента. Также будут отправлены широковещательные сообщения, чтобы предупредить зарегистрированных пользователей о том, что система собирается быть выключена.
Вы должны принять во внимание эти различия, чтобы решить, какой использовать.
shutdown 18:00
msgstr " запускает процесс в вашей оболочке, который ждет". Что если вы выйдете из системы раньше?nohup
илиdisown
или что - то, если выходить из системы обычно убиваешь работаете фоновые процессы. Различные системы могут иметь разные значения по умолчанию для этого. (Я предполагаю, что на самом делеsudo shutdown
процесс все еще выполняется, скорее он просто сигнализируетinit
о запуске таймера выключения. Последнее может действительно быть тем, что происходит, но я недавно не проверял. О, но @JdeBP имеет; посмотрите этот ответ )at
так, чтобыcron
вместоatd
?А теперь системный ответ.
Если у вас 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
запуска в контекст сеанса входа в систему. Последний может быть более разрешающим, позволяя (скажем) непривилегированному пользователю, который вошел в систему в сеансе активного входа в систему, завершить работу системы.дальнейшее чтение
источник