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

Однопользовательский режим по определению не реализует сетевое взаимодействие при запуске. Если выразить это в терминах sysV runlevel, вам нужен runlevel 2 (локальный многопользовательский режим с сетевым взаимодействием). Вы можете переключиться на него с помощью telinit 2.

Стандартные определения уровней выполнения:

  • 0 - Остановить систему
  • 1 - Однопользовательский режим
  • 2 - Многопользовательский с сетевым взаимодействием, но без сетевых служб (например, NFS)
  • 3 - Многопользовательский с сетевым взаимодействием и службами
  • 4 - Неопределено
  • 5 - Многопользовательский с сетевым взаимодействием, службами и графическим интерфейсом (например, Xorg)
  • 6 - Перезагрузить систему.
4
25.07.2017, 19:24
2 ответа

When queuing a new job, this option controls how to deal with already queued jobs. It takes one of "fail", "replace", "replace-irreversibly", "isolate", "ignore-dependencies", "ignore-requirements" or "flush". Defaults to "replace", except when the isolate command is used which implies the "isolate" job mode.

If "fail" is specified and a requested operation conflicts with a pending job (more specifically: causes an already pending start job to be reversed into a stop job or vice versa), cause the operation to fail.

If "replace" (the default) is specified, any conflicting pending job will be replaced, as necessary.

If "replace-irreversibly" is specified, operate like "replace", but also mark the new jobs as irreversible. This prevents future conflicting transactions from replacing these jobs (or even being enqueued while the irreversible jobs are still pending). Irreversible jobs can still be cancelled using the cancel command.

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

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

Я проверил разницу в поведении в этом направлении и сообщил о ней как о дефекте в средстве отслеживания проблем systemd .

1
27.01.2020, 21:01

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

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

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

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

0
27.01.2020, 21:01

Теги

Похожие вопросы