Словарь параметров systemd
100 терминов: что делает параметр, где ставится, какой пример считается правильным и какие ошибки он вызывает, если задать его не так.
Автозапуск
4- Alias= Дополнительное имя для unit и совместное включение связанных unit. Где применяется и какие ограничения.
- DefaultInstance= Как работают unit-файлы вида имя@.service, что подставляется в %i и зачем нужен DefaultInstance=.
- RequiredBy= Параметр RequiredBy= создаёт жёсткую зависимость со стороны цели. Чем опасен и когда уместен.
- WantedBy= Параметр WantedBy= в секции [Install] определяет, куда systemctl enable поставит ссылку. Почему без него автозапуск не работает.
Вывод и журнал
3- StandardInput= Настройка стандартного ввода службы: null, tty, файл, сокет, передача данных строкой через StandardInputText.
- StandardOutput= Куда идёт вывод службы: журнал, файл, null. Значения file, append, truncate и устаревший syslog.
- SyslogIdentifier= Как задать имя, под которым служба пишет в журнал, и зачем нужны LogLevelMax и LogExtraFields.
Зависимости и порядок
11- After= Параметры After= и Before= задают только очерёдность, но не необходимость. Чем отличаются от Requires= и как не перепутать.
- BindsTo= BindsTo= привязывает жизнь службы к другому unit, PartOf= передаёт остановку и перезапуск. Разбор отличий.
- CollectMode= Автоматическое удаление сведений о завершённых unit. Нужно для временных и шаблонных служб.
- ConditionPathExists= Условия пропускают запуск тихо, утверждения — с ошибкой. Разбор частых проверок: пути, окружение, архитектура.
- DefaultDependencies= systemd добавляет зависимости сам. Когда их нужно отключить и чем это опасно.
- Description= Описание unit и ссылки на документацию: где они показываются и почему это не формальность.
- OnFailure= Параметр OnFailure= вызывает другой unit при переходе службы в состояние failed. Основа оповещений о сбоях.
- RefuseManualStart= Запрет запускать или останавливать unit вручную. Для вспомогательных частей больших систем.
- Requires= Параметр Requires= требует запуска другого unit. Что происходит при его падении и когда лучше Wants=.
- RequiresMountsFor= Параметр заставляет systemd самому найти нужные mount-unit по пути и добавить зависимости. Проще, чем перечислять их вручную.
- Wants= Параметр Wants= просит запустить другой unit, но не требует успеха. Основной способ описывать необязательные зависимости.
Запуск и процессы
10- BusName= Служба считается запущенной, когда занимает имя на системной шине. Когда это применимо.
- ExecCondition= Команда, которая решает, запускать службу или пропустить. Отличие кодов возврата от обычных команд.
- ExecReload= Параметр ExecReload= задаёт, как служба перечитывает настройки. Подстановка $MAINPID, сигнал HUP и когда этого делать нельзя.
- ExecStart= Параметр ExecStart= задаёт команду запуска службы. Абсолютный путь, разбор аргументов, кавычки, префиксы и отсутствие оболочки.
- ExecStartPre= Предварительные и завершающие команды службы: порядок выполнения, влияние на запуск, префикс «-» и типичные ошибки.
- ExecStop= Команды остановки службы: когда они нужны, чем отличаются от сигналов, почему их неудача помечает службу упавшей.
- NotifyAccess= Параметр NotifyAccess= определяет, от каких процессов systemd принимает уведомления. Частая причина таймаута при Type=notify.
- PIDFile= Параметр PIDFile= указывает файл с номером главного процесса. Обязателен при Type=forking, иначе systemd угадывает процесс.
- RemainAfterExit= Параметр RemainAfterExit= оставляет службу в состоянии active после завершения процесса. Для чего нужен и чем мешает таймерам.
- Type= Параметр Type= определяет, по какому признаку systemd считает службу запущенной. Разбор всех значений и типичных ошибок выбора.
Изоляция и безопасность
10- NoNewPrivileges= Параметр запрещает процессам службы повышать права, в том числе через setuid-программы. Что даёт и с чем несовместим.
- PrivateDevices= Урезанный /dev для службы и родственные защиты: ProtectKernelTunables, ProtectKernelModules, DeviceAllow.
- PrivateNetwork= Параметр выдаёт службе отдельное сетевое пространство имён с одним петлевым интерфейсом. Когда это уместно.
- PrivateTmp= Параметр PrivateTmp= выдаёт службе отдельные /tmp и /var/tmp. Что это защищает и почему файлы «пропадают».
- ProtectHome= Параметр ProtectHome= скрывает /home, /root и /run/user от службы. Значения yes, read-only, tmpfs.
- ProtectProc= Служба видит только свои процессы. Полезная защита, которая ломает мониторинг.
- ProtectSystem= Параметр ProtectSystem= закрывает /usr, /boot и /etc от записи. Значения yes, full, strict и как разрешить нужные пути.
- ReadWritePaths= Как разрешить службе запись в конкретный путь при включённой изоляции и как закрыть отдельные каталоги.
- RestrictAddressFamilies= Ограничение семейств сокетов для службы. Зачем нужен AF_UNIX и почему без него ломается журналирование.
- SystemCallFilter= Ограничение набора системных вызовов через seccomp: наборы вида @system-service, последствия для работающей службы.
Инструменты разбора
8- coredumpctl Как посмотреть трассировку падения, открыть дамп в отладчике и включить сохранение дампов.
- journalctl Полезные ключи journalctl для диагностики: -u, -xe, -b, -p, --since, -g, -o и просмотр журнала ядра.
- systemctl daemon-reload Чем отличается daemon-reload от reload службы и от daemon-reexec, и когда каждая команда нужна.
- systemctl show Как узнать, что systemd реально применил: разобранные значения, счётчики, состояние. Отличие от systemctl cat.
- systemd-analyze Команды systemd-analyze, полезные при диагностике: verify, security, calendar, blame, critical-chain, exit-status.
- systemd-escape Как получить правильное имя mount-unit из пути и как экранировать имя экземпляра шаблона.
- systemd-run Как проверить программу в окружении службы, не создавая unit-файл. Главный инструмент отладки служб.
- systemd-tmpfiles Как создавать каталоги с нужными правами при загрузке и чем это лучше команд в unit-файле.
Каталоги службы
3- LogsDirectory= Каталог в /var/log для служб, которые ведут свои файлы журнала. Права, изоляция, ротация.
- RuntimeDirectory= Каталог на время работы службы: сокеты, pid-файлы. Как он удаляется и что делает RuntimeDirectoryPreserve.
- StateDirectory= Автоматические каталоги службы в /var/lib, /var/cache, /var/log, /run и /etc: systemd создаёт их сам и следит за владельцем.
Монтирование и пути
3- Options= (Mount) Параметры монтирования в unit и в fstab: nofail, _netdev, x-systemd.automount, x-systemd.device-timeout.
- PathExists= Как запускать службу по появлению или изменению файла: различия между вариантами наблюдения.
- What= и Where= Что монтируется и куда: устройство, UUID, сетевой ресурс. Правило соответствия имени unit точке монтирования.
Окружение
4- Environment= Как задать переменные окружения службе, почему подстановки внутри не работают и чем это отличается от вашего профиля оболочки.
- EnvironmentFile= Подключение файла с переменными окружения: формат, необязательный режим с дефисом, отличия от файла для оболочки.
- LoadCredential= Механизм учётных данных systemd: секрет попадает файлом в защищённый каталог, а не в окружение процесса.
- Подстановки (%i, %n, %h) Полезные подстановки systemd: имя экземпляра, имя unit, домашний каталог, имя машины. Как экранировать знак процента.
Остановка и сигналы
2- KillMode= Параметр KillMode= определяет, кого systemd завершает при остановке службы: всю контрольную группу, главный процесс или никого.
- KillSignal= Какой сигнал systemd посылает при остановке, что делает FinalKillSignal и когда нужно менять значения.
Перезапуск и таймауты
9- Restart= Параметр Restart= задаёт, при каких условиях systemd поднимает службу заново. Разбор всех значений, взаимодействие с пределом частоты запусков.
- RestartPreventExitStatus= Список кодов, при которых systemd не станет перезапускать службу. Как остановить бессмысленный цикл.
- RestartSec= Параметр RestartSec= задаёт задержку перед повторным запуском. Зачем она нужна и как считать значение вместе с пределом частоты запусков.
- RuntimeMaxSec= Служба завершается принудительно через заданное время. Для чего это нужно и чем отличается от таймера.
- StartLimitBurst= Сколько раз служба может запуститься за отрезок времени, прежде чем systemd её заблокирует. Как настроить и как сбросить.
- SuccessExitStatus= Как объявить нестандартные коды возврата успешными и как запретить перезапуск при определённых кодах.
- TimeoutStartSec= Параметр TimeoutStartSec= ограничивает время запуска. Как выбрать значение, чем опасно infinity и как это связано с Type=notify.
- TimeoutStopSec= Параметр TimeoutStopSec= ограничивает время остановки. Что происходит после истечения и как не потерять данные при завершении.
- WatchdogSec= Параметр WatchdogSec= требует от службы регулярных отметок о здоровье. Как это работает и когда включать не стоит.
Пользователь и права
7- AmbientCapabilities= Как выдать службе одну возможность root вместо полных прав: привязка к порту ниже 1024, изменение приоритетов, доступ к сети.
- DynamicUser= systemd создаёт пользователя на время работы службы. Что это даёт, какие ограничения накладывает и когда мешает.
- Group= Основная и дополнительные группы службы: зачем нужны, как через них дают доступ к сокетам и устройствам.
- SupplementaryGroups= Как выдать службе доступ к чужим файлам и сокетам через членство в группе, не расширяя права на сами файлы.
- UMask= Маска прав для файлов, которые создаёт служба. Значение по умолчанию и когда его нужно менять.
- User= Параметр User= задаёт пользователя службы. Как это влияет на права, порты и окружение, и почему существование пользователя проверяется при запуске.
- WorkingDirectory= Параметр WorkingDirectory= задаёт текущий каталог процесса. Абсолютный путь, необязательный режим с дефисом, код 200/CHDIR.
Понятия systemd
5- drop-in (каталог .d) Как правильно менять чужие unit-файлы: каталоги .d, systemctl edit, сброс списочных параметров.
- target Что такое цель, чем отличается от уровня запуска, зачем нужны multi-user.target и network-online.target.
- unit Unit — единица управления systemd. Разбор всех типов: service, socket, timer, mount, path, target, slice и остальные.
- Контрольные группы (cgroup) Как systemd использует контрольные группы: дерево срезов, учёт потребления, ограничения, инструменты просмотра.
- Состояния unit Разбор двух наборов состояний: работает ли unit сейчас и включён ли он в автозапуск. Что значит каждое значение.
Ресурсы и ограничения
12- CPUQuota= Ограничение доли процессора для службы и распределение времени между службами. Чем отличается от LimitCPU.
- Delegate= Параметр разрешает службе самой управлять своим поддеревом контрольных групп. Нужен средам исполнения контейнеров.
- IOWeight= Распределение диска между службами и жёсткие пределы скорости чтения и записи.
- IPAddressAllow= Ограничение сетевых адресов на уровне контрольной группы: работает без правил брандмауэра и применяется только к этой службе.
- LimitMEMLOCK= Предел памяти, которую служба может заблокировать в оперативной памяти. Нужен базам данных и программам с секретами.
- LimitNOFILE= Как задать службе предел файловых дескрипторов и почему настройки в limits.conf на неё не действуют.
- LimitNPROC= Пределы числа процессов, размера стека, памяти и дампов: LimitNPROC, LimitSTACK, LimitCORE, LimitMEMLOCK.
- MemoryMax= Жёсткий и мягкий пределы памяти службы через контрольные группы. Что происходит при достижении каждого.
- Nice= Приоритет процессорного времени службы, политики планирования и приоритет ввода-вывода.
- OOMScoreAdjust= Как повлиять на выбор жертвы при нехватке памяти и что делать службе, когда её процесс убит ядром.
- Slice= Срезы объединяют службы в дерево контрольных групп с общими ограничениями. Как создать свой срез и зачем.
- TasksMax= Ограничение числа задач в контрольной группе службы. Чем отличается от LimitNPROC и где задаётся общее значение.
Сокеты
4- Accept= Режим «по соединению»: systemd принимает подключение и запускает отдельный экземпляр службы. Когда это нужно.
- ListenStream= Как объявить адрес прослушивания сокета: TCP, unix-сокет, UDP, канал. Форматы значений и права.
- SocketUser= Владелец и права файла сокета: как дать веб-серверу доступ к сокету приложения.
- Sockets= Со стороны службы: от каких сокетов она получает дескрипторы. Когда параметр нужен.
Таймеры
5- AccuracySec= Окно неточности таймера: почему задача запускается не ровно в назначенное время и как это исправить.
- OnBootSec= Таймеры, отсчитывающие время от загрузки или от прошлого запуска. Чем отличаются от календарных.
- OnCalendar= Формат календарных выражений systemd, сокращения вида daily, проверка через systemd-analyze calendar.
- Persistent= Как заставить таймер выполнить пропущенный запуск после включения машины и где хранится состояние.
- RandomizedDelaySec= Случайный разброс времени срабатывания и допустимая неточность. Зачем нужны на парке машин.