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 2 3 reboot, halt, fasthalt, fastboot — stopping and restarting the system. FreeBSD Manual Pages. Дата обращения: 25 ноября 2024.
- ↑ systemctl — Control the systemd system and service manager. Linux manual page. Дата обращения: 25 ноября 2024.