Какова практическая разница между `systemctl start reboot.target` и` systemctl reboot`?

Существуют два документальных различия между start reboot.target и reboot . Но start reboot.target – это то, что запускается ctrl-alt-del.target .

Имеет ли значение, что ctrl-alt-del.target будет опускать – --job-mode=replace-irreversibly ? В каких ситуациях это приведет к поведению? Почему он включен при systemctl reboot ?

 man systemctl 

reboot [arg]

Выключите и перезагрузите систему. Это в основном эквивалентно start reboot.target --job-mode=replace-irreversibly , но также печатает настенное сообщение всем пользователям.

 man systemd.special 

ctrl-alt-del.target: systemd запускает эту цель, когда Control + Alt + Del нажата на консоли. Обычно это должно быть сглажено (символическое) на reboot.target.

  • Может ли система сохранить состояние при перезагрузке?
  • Перезагрузите все службы без перезагрузки
  • systemd "onehot" для запуска poweroff
  • Имеет ли systemd другой тайм-аут при перезагрузке или обычном перезапуске службы?
  • Предельная перезагрузка системы
  • 2 Solutions collect form web for “Какова практическая разница между `systemctl start reboot.target` и` systemctl reboot`?”

    Из чтения источника файла reboot.target мы видим, что ctrl-alt-del.target ссылается на Alias= , то есть это другое имя для той же команды и будет работать одинаково.

    Рассматривая исходный код systemctl.c , мы также видим, что systemctl reboot будет проходить с replace-irreversibly вариантом.

    Таким образом, кажется, что все три варианта команд перезагрузки, которые вы нашли, работают одинаково: systemctl reboot , reboot.target и ctrl-alt-del.target .

    Если у вас есть предложение по улучшению документации, вы можете изменить исходные файлы XML для документации systemd и отправить запрос на перенос.

    При очередном запуске нового задания этот параметр определяет, как работать с уже поставленными в очередь заданиями. Он принимает один из «fail», «replace», «replace-unversible», «isolate», «ignore-dependencies», «ignore-requirements» или «flush». По умолчанию «заменить», кроме случаев, когда используется команда изоляции, которая подразумевает режим «изолировать» работу.

    Если указано «fail», и запрошенная операция конфликтует с ожидающим заданием (точнее: приводит к тому, что уже запущенное задание запуска будет отменено в задании остановки или наоборот), вызывают сбой операции.

    Если указано «заменить» (по умолчанию), любое противоречивое ожидающее задание будет заменено по мере необходимости.

    Если «заменить-необратимо» указано, действовать как «заменить», но также отметить новые рабочие места как необратимые. Это предотвращает замену этих рабочих мест будущими конфликтующими транзакциями (или даже нахождение в очереди, в то время как необратимые задания все еще ожидаются). Необратимые задания могут быть отменены с помощью команды cancel.

    Это говорит о практическом эффекте. Предположим, вы «перехватываете блоки в логику состояния сна», используя sleep.target чтобы втянуть их. У ваших блоков крюка нет DefaultDependencies=no , поэтому они зависят от sysinit.target … и Conflict с shutdown.target .

    Если вы запустите systemctl start reboot.target а затем немедленно systemctl start suspend.target , кажется, что ваш блок shutdown.target остановит shutdown.target . Теперь systemd-reboot.service имеет systemd-reboot.service Requires=shutdown.target , поэтому его также следует остановить / отменить. ( umount.target не следует отменять).

    Я проверил разницу в поведении в этих строках и сообщил об этом как дефект в системном трекер-системе .

    Linux и Unix - лучшая ОС в мире.