Rain WikiWindows · Linux · Android

Юниты systemd и systemctl

СлужбаДистрибутивы с systemd

Юнит systemd — это объект конфигурации, которым управляет systemd, система инициализации большинства дистрибутивов Linux: службы, сокеты, таймеры, точки монтирования и многое другое. Юниты описываются файлами юнитов, такими как /etc/systemd/system/<name>.service, и управляются с помощью команды systemctl.

1Типы юнитов

.service запускает программу, .socket запускает службу при поступлении соединения, .timer запускает юнит по расписанию, .mount и .automount управляют файловыми системами, .target группирует юниты в состояния, такие как multi-user.target.

2Где находятся файлы юнитов

Пакеты устанавливают юниты в /usr/lib/systemd/system (или /lib/systemd/system). Локальные изменения следует вносить в /etc/systemd/system, так как они имеют приоритет. Команда systemctl edit <unit> создает переопределение (drop-in), вместо изменения файла из пакета.

3Повседневные команды

systemctl status <unit> показывает состояние и последние строки журнала. 'start', 'stop' и 'restart' выполняют действие немедленно; 'enable' и 'disable' управляют запуском при загрузке; 'enable --now' выполняет оба действия. systemctl --failed выводит список неисправных юнитов, а systemctl daemon-reload перечитывает файлы юнитов после внесения изменений.

Как проверить неисправную службу

  1. Вывести список неисправных юнитов: systemctl --failed
  2. Показать состояние и последние сообщения: systemctl status <unit>
  3. Прочитать полный журнал текущей загрузки: journalctl -u <unit> -b
  4. После исправления конфигурации: sudo systemctl restart <unit>

Осторожно

  • Изменяйте юниты из пакетов с помощью systemctl edit, а не путем редактирования файлов в /usr/lib/systemd/system: обновления перезапишут их.
  • Не отключайте юниты, назначение которых вам неизвестно, например systemd-journald или dbus.

Источники

  1. systemctl(1) man7.org
  2. systemd.unit(5) man7.org
  3. systemd.timer(5) man7.org

Последняя проверка: