zaLinux.ru

В чём разница между «systemctl reboot» и «reboot», а также «systemctl poweroff» и «poweroff»


Какая разница между

sudo systemctl reboot

и

sudo reboot

Верно ли что применение команд зависит от операционной системы, и что одна выполнит сокращённый вариант, другая использует systemctl?

Ответ:

Команды halt, poweroff, reboot реализованы для того, чтобы сохранить базовую совместимость с исходными командами SysV. Глаголы

  • systemctl halt
  • systemctl poweroff
  • systemctl reboot

обеспечивают ту же функциональность с некоторыми дополнительными функциями.

То есть reboot это теперь тоже systemctl. В этом можно убедиться:

which reboot
/usr/sbin/reboot

file /usr/sbin/reboot
/usr/sbin/reboot: symbolic link to /bin/systemctl

То есть команда reboot на самом деле является символической ссылкой на systemctl.

В свою очередь команда

systemctl reboot

является сокращением для

systemctl start reboot.target --job-mode=replace-irreversibly --no-block

То есть

reboot

это в точности то же самое что и

systemctl reboot

а также

systemctl start reboot.target --job-mode=replace-irreversibly --no-block

Сказанное справедливо для дистрибутивов, которые перешли на systemd (например, это Arch Linux, всё семейство Debian, включая Ubuntu). То есть для большинства современных дистрибутивов, кроме тех, на которых остался SysV.

В некоторых случаях команда reboot не срабатывает — подробности смотрите в статье Ошибка «Failed to talk to init daemon». В этом случае для перезагрузки компьютера необходимо добавить опцию -f:

reboot -f

Команда для выключения следующая:

poweroff -f

Если даже эти команды не помогли, то используйте варианты с двойной опцией -f.

Чтобы выключить компьютер выполните:

poweroff -f -f

Или перезагрузите компьютер командой:

reboot -f -f

Опция -f означает принудительную немедленную остановку, выключение или перезагрузку. При указании один раз это приводит к немедленному, но чистому завершению работы системным менеджером. Если указано дважды, это приводит к немедленному завершению работы без обращения к системному менеджеру.

При использовании опции -f с systemctl halt, systemctl poweroff, systemctl reboot или systemctl kexec выполняется выбранная операция, без выключения всех юнитов. Однако все процессы будут принудительно завершены, и все файловые системы будут отключены или перемонтированы только для чтения. Следовательно, это радикальный, но относительно безопасный вариант запроса немедленной перезагрузки. Если для этих операций дважды указать --force (за исключением kexec), они будут выполнены немедленно, без завершения каких-либо процессов или размонтирования каких-либо файловых систем. Предупреждение: указание --force дважды для любой из этих операций может привести к потере данных. Обратите внимание, что если дважды указать --force, выбранная операция выполняется самим systemctl, и с системным менеджером не связываются. Это означает, что команда должна выполняться даже в случае сбоя системного менеджера.

Смотрите также: Как использовать Systemctl для управления службами Systemd и юнитами


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован.