Утилита systemctl#

Описание#

Утилита systemctl используется для анализа и контроля состояния системы systemd и диспетчера служб. systemctl предоставляет набор команд для управления службами, единицами инициализации, сетевыми соединениями и другими элементами системы. Утилита позволяет пользователям запускать, останавливать, перезапускать, настраивать и получать информацию о службах и единицах инициализации. Она также предоставляет информацию о состоянии системы, журналы и другие системные данные.

Синтаксис утилиты:

systemctl <options> <commands>

Где:

  • <options> - опции;

  • <commands> - команды.

Опции#

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

Опции systemctl#

Опция

Описание

-a, --all

Отобразить неактивные объекты и объекты, следующие за другими

--reverse

Отобразить обратные зависимости между объектами

--value

Вывести только значения, пропустив названия свойств и = при использовании show

--show-types

Указать тип сокета при отображении сокетов

--failed

Отобразить список объектов, находящихся в состоянии сбоя

--stop-reason

Занести в журнал аудита вводимую пользователем причину остановки службы. Используется совместно с командой stop

Команды#

Часто используемые команды утилиты представлены в таблице ниже.

Команды systemctl#

Команда

Описание

start <PATTERN>

Активировать указанный шаблон (<PATTERN>)/устройство

stop <PATTERN>

Остановить (деактивировать) один или несколько указанных шаблонов (<PATTERN>)/устройств

restart <PATTERN>

Остановить и перезапустить указанный шаблон (<PATTERN>)/устройство. Если шаблон/устройство не были активированы, они будут запущены этой командой

enable <UNIT>

Разрешить заданному <UNIT> автостарт при запуске системы

disable <UNIT>

Запретить заданному <UNIT> автостарт при загрузке системы

status <PATTERN>

Отобразить информацию о состоянии работы всей системы или указанных шаблонов (<PATTERN>)/устройств, а также последних данных журнала

show <PATTERN>

Отобразить свойства одного или нескольких unit, jobs или диспетчера. Если <PATTERN> не указан – отображаются свойства диспетчера

kill <PATTERN>

Послать системный сигнал одному или более процессам unit. Если не используется с опцией --signal (или с сокращенной формой -s), то будет послан сигнал SIGTERM

Команды, которые можно использовать для управления питанием системы, представлены в таблице ниже.

Команды управления питанием системы systemctl#

Команда

Описание

halt

Завершить работу и остановить систему, а также вывести соответствующее сообщение для всех пользователей. Данная операция остановит ядро операционной системы после завершения работы, оставив аппаратное обеспечение включенным. Команда асинхронна, т.е. будет возвращена после постановки в очередь, не дожидаясь завершения. В сочетании с --force отключение всех запущенных служб пропускается, однако все процессы завершаются, а все файловые системы размонтируются или подключаются только для чтения, за чем немедленно следует остановка системы. В сочетании с параметром --when= завершение работы будет запланировано по истечении заданного времени. Параметр --when=cancel отменит завершение работы

poweroff

Завершить работу и выключить питание системы, а также вывести соответствующее сообщение для всех пользователей. Команда асинхронна. В этой команде используются --force и --when= аналогично halt

reboot

Завершить работу и перезагрузить систему, вывести соответствующее сообщение для всех пользователей. Команда асинхронна. Если указан параметр switch --reboot-argument=, он будет передан в качестве необязательного аргумента системному вызову reboot. --boot-loader-entry=, --boot-loader-menu= и --firmware-setup могут использоваться для выбора соответствующего действий после перезагрузки. Команда выполняет --force и --when= аналогично halt

suspend

Приостановить работу системы. Данная команда является асинхронной. Если указан параметр --force, то в случае возникновения ошибки она будет проигнорирована, и операция будет повторена непосредственно через запуск целевого модуля

hibernate

Перевести систему в режим гибернации. Команда является асинхронной. Выполняет --force таким же образом, как и suspend

hybrid-sleep

Перевести систему в режим гибернации и приостановить ее работу. Команда является асинхронной, выполняет --force так же, как и suspend

daemon-reload

Обновить конфигурацию <UNIT> для всех служб

Аудит причин остановки служб#

Чтобы зафиксировать причину остановки службы в журнале аудита, воспользуйтесь командой:

systemctl stop <service> --stop-reason="<text_of_the_reason>"

Где:

  • <service> - служба, которую необходимо остановить;

  • <text_of_the_reason> - произвольный текст причины остановки.

Успешное выполнение данной команды инициирует внесение записи в файл аудита /var/log/audit/audit.log в следующем формате:

type=SERVICE_STOP msg=audit(1706516441.561:157): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=<service> stop_reason="<text_of_the_reason>" comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"

Для всех сервисов, остановленных без указания причины (без задания опции --stop-reason), данное поле будет заполнено как undefined. В случае передачи пустой строки (--stop-reason="") в терминале будет выведена ошибка:

--stop-reason= requires arguments.

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

  • Для отображения всех запущенных служб в системе введите команду:

    systemctl status
    
  • Для отображения списка вышедших из строя units введите команду:

    systemctl --failed
    
  • Для запуска unit введите команду:

    systemctl start <unit>
    
  • Чтобы вывести статус заданного unit, используйте команду:

    systemctl status <unit>
    
  • Чтобы разрешить автозапуск unit при загрузке системы, воспользуйтесь командой:

    systemctl enable <unit>
    

Дополнительная информация#

Дополнительную информацию можно получить, выполнив команду:

man systemctl

Или:

systemctl --help