Reboot (утилита)

halt и reboot — утилиты в UNIX-подобных операционных системах, предназначенные для безопасного завершения работы и перезагрузки компьютера. Они выполняют последовательность действий по подготовке системы к выключению: завершают все запущенные процессы, синхронизируют и размонтируют файловые системы, а затем инициируют остановку или перезапуск ядра. Эти утилиты являются стандартными и присутствуют в большинстве дистрибутивов Linux и BSD-системах, таких как FreeBSD[1].

Функциональность

Утилиты `halt` и `reboot` обеспечивают корректное завершение работы системы. Их основные функции включают:

  • Отправку сигнала `SIGTERM` (а затем `SIGKILL`) всем процессам, позволяя им завершиться правильно.
  • Вызов системного вызова `sync()` для записи всех данных из кэша файловой системы на диск.
  • Размонтирование файловых систем.
  • Запись события о выключении или перезагрузке в системный журнал (`syslog` или `journal`).
  • Непосредственную передачу команды ядру операционной системы для остановки (`halt`) или перезагрузки (`reboot`).

В некоторых системах (например, FreeBSD) также существуют команды `fasthalt` и `fastboot`, которые являются символическими ссылками (алиасами) на `halt` и `reboot` соответственно[1].

Использование

Синтаксис команд в системах семейства BSD:

halt [-lnpq] [-k ядро]
reboot [-dlnpq] [-k ядро]
fasthalt [-lnpq] [-k ядро]
fastboot [-dlnpq] [-k ядро]

Основные параметры (флаги)

В следующей таблице перечислены ключевые параметры для данных утилит на основе документации FreeBSD[1].

Флаг Описание
`-d` Создать дамп памяти ядра при перезагрузке для последующего анализа сбоев.
`-k` ядро Загрузить указанное ядро при следующей загрузке системы. Если загрузка пройдёт успешно, это ядро может стать загрузочным по умолчанию.
`-l` Не производить запись в системный журнал. Этот флаг может использоваться сценариями более высокого уровня (например, `shutdown`), которые сами ведут логирование.
`-n` Не выполнять принудительную синхронизацию файловых систем перед остановкой. **Не рекомендуется к использованию**, так как может привести к потере данных.
`-p` После остановки системы попытаться отключить питание компьютера, если это поддерживается аппаратно.
`-q` Выполнить «быструю» остановку или перезагрузку. Процессы завершаются немедленно без отправки сигнала `SIGTERM`. **Не рекомендуется к использованию** в нормальных условиях.

Современные аналоги и оболочки

В современных дистрибутивах Linux прямые вызовы `halt` и `reboot` часто перенаправляются на более универсальные системные менеджеры, такие как systemd. Команды `systemctl halt` и `systemctl reboot` предоставляют расширенный контроль над процессом остановки, интеграцию с cgroups, планировщиками и другими сервисами[2]. Тем не менее, традиционные утилиты сохраняются для обратной совместимости.

См. также

  • shutdown — утилита для планированного выключения или перезагрузки системы.
  • init и systemd — системы инициализации, управляющие процессами запуска и остановки.
  • runlevel — уровни выполнения в системах SysV init.

Примечания

  1. 1 2 3 reboot, halt, fasthalt, fastboot — stopping and restarting the system. FreeBSD Manual Pages. Дата обращения: 25 ноября 2024.
  2. systemctl — Control the systemd system and service manager. Linux manual page. Дата обращения: 25 ноября 2024.

Ссылки