Документирование = - (равно минус) в системных файлах системы


14

В моей системе Archlinux /usr/lib/systemd/system/mdmonitor.serviceфайл содержит следующие строки:

[Service]
Environment=  MDADM_MONITOR_ARGS=--scan
EnvironmentFile=-/run/sysconfig/mdadm
ExecStartPre=-/usr/lib/systemd/scripts/mdadm_env.sh
ExecStart=/sbin/mdadm --monitor $MDADM_MONITOR_ARGS

Я подозреваю (подтверждается некоторыми поисками), что =-означает, что служба не должна давать сбой, если указанные файлы отсутствуют. Однако я не смог найти такое поведение в man-странице файлов systemd. Где находится официальная документация для =-задания?


1
Обратите внимание, что это просто обычное =присваивание, а не второй тип синтаксиса присваивания файла .INI.
JdeBP

Ответы:


19

Это задокументировано в systemd.exec:

EnvironmentFile=

[...]

Передаваемый аргумент должен быть абсолютным именем файла или выражением с подстановочными знаками, необязательно с префиксом « -», который указывает, что если файл не существует, он не будет прочитан и не будет зарегистрировано ни сообщения об ошибке, ни предупреждения.

И в systemd.service:

ExecStart=

...

Для каждой из указанных команд первый аргумент должен быть абсолютным путем к исполняемому файлу. Необязательно, этому имени файла может предшествовать ряд специальных символов:

Таблица 1. Специальные исполняемые префиксы

...

ExecStartPre=, ExecStartPost=

...

Если какая-либо из этих команд (без префикса -) завершается неудачно, остальные не выполняются, и модуль считается сбойным.

(Чтобы найти наиболее полную документацию по директиве systemd, найдите ее в systemd.directives.)


1

Кроме того, такая строка

После того, как = -. Крепление

выглядит как другой "равно минус" -Syntax, но вместо этого это просто After=директива, перечисляющая специальный системный блок -.mount, который является корневой точкой монтирования. Документы: https://www.freedesktop.org/software/systemd/man/systemd.special.html#-.mount.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.