Команда halt

Команда halt предназначена для прекращения работы центрального процессора системы с отправкой сообщений всем ее пользователям. В большинстве случаев ее использование приводит к полному прекращению работы системы. Реализация функции, используемой посредством данной команды, зависит от архитектуры центрального процессора; например, в архитектуре x86 для этой цели предусмотрена специальная инструкция HLT. В текущее время эта команда является устаревшей, поэтому после перехода большинства дистрибутивов на менеджер инициализации systemd она была реализована в виде простой символьной ссылки на утилиту systemctl из состава systemd. Более того, в дистрибутивах Linux Mint, Ubuntu и Debian ее может не быть в системе по умолчанию. В таком случае при возникновении необходимости использования этой команды, а также таких команд, как reboot и shutdown, следует установить пакет программного обеспечения systemd-sysv с помощью следующей команды:

$ sudo apt-get install systemd-sysv

Базовый синтаксис команды выглядит следующим образом:

# halt [параметры]

Утилита systemctl автоматически обрабатывает вызовы посредством символьной ссылки с именем halt и поддерживает параметры соответствующей утилиты для совместимости.

Наиболее важными параметрами являются параметры --poweroff и --reboot, позволяющие выключить и перезагрузить систему соответственно, параметр --force, предназначенный для принудительного прекращения работы центрального процессора путем осуществления системного вызова без подготовки системы, параметр --wtmp-only, позволяющий добавить запись в файл журнала /var/log/wtmp и не прекращать работу центрального процессора, параметр --no-wtmp, позволяющий прекратить работу центрального процессора без добавления записи в файл журнала /var/log/wtmp, а также параметр --no-wall, позволяющий не отправлять сообщение о прекращении работы центрального процессора всем пользователям системы.

Что касается утилиты systemctl, то она осуществляет изоляцию цели halt.target (то есть, достижение этой цели и закрытие всех остальных целей), в ходе которой осуществляется системный вызов reboot(RB_HALT_SYSTEM). Если вы не хотите использовать команду halt, вы можете воспользоваться одной из следующих команд:

$ sudo systemctl isolate halt.target
$ sudo systemctl halt

Они работают аналогичным образом.

Примеры использования

Прекращение работы центрального процессора

Для прекращения работы центрального процессора системы достаточно использовать команду halt без каких-либо параметров:

$ sudo halt

В результате работа центрального процессора системы должна завершиться.

Прекращение работы системы

Для более корректного прекращения работы системы следует использовать команду halt с параметром --shutdown:

$ sudo halt --shutdown

В этом случае прекращение работы системы будет осуществляться посредством подсистемы ACPI.

Перезагрузка системы

Для перезагрузки системы следует использовать команду halt с параметром --reboot:

$ sudo halt reboot

В результате система будет перезагружена.

Скрытное прекращение работы центрального процессора

Для того, чтобы прекратить работу центрального процессора без добавления записи в файл журнала /var/log/wtmp и отправки сообщения всем пользователям системы достаточно использовать параметры --no-wtmp и --no-wall:

$ sudo halt --no-wtmp --no-wall

В результате работа центрального процессора системы будет прекращена без лишних сообщений.