Ответы:
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, у вас есть операционная система 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
запуска в контекст сеанса входа в систему. Последний может быть более разрешающим, позволяя (скажем) непривилегированному пользователю, который вошел в систему в сеансе активного входа в систему, завершить работу системы.
shutdown 18:00
msgstr " запускает процесс в вашей оболочке, который ждет". Что если вы выйдете из системы раньше?