Документація = - (дорівнює мінусу) у файлах системних одиниць


15

У моїй системі 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

Я підозрюю (підтвердив якийсь googling), що =-означає, що служба не повинна виходити з ладу, якщо вказані файли відсутні. Однак мені не вдалося знайти таку поведінку в мапі сторінки файлів системних одиниць. Де офіційна документація на виконання =-завдання?


1
Зауважте, що це просто звичайне =призначення, а не другий тип синтаксису призначення .INI-файлу.
JdeBP

Відповіді:


20

Це задокументовано у systemd.exec:

EnvironmentFile=

[...]

Поданий аргумент повинен бути абсолютним іменем файлу або виразом підстановки, необов'язково префіксом " -", який вказує, що якщо файл не існує, він не буде прочитаний і не записується повідомлення про помилку чи попередження.

І в systemd.service:

ExecStart=

Для кожної із зазначених команд перший аргумент повинен бути абсолютним шляхом до виконуваного файлу. За бажанням, це ім'я файлу може бути встановлено з кількома спеціальними символами:

Таблиця 1. Спеціальні виконувані префікси

ExecStartPre=, ExecStartPost=

Якщо будь-яка з цих команд (не з префіксом -) виходить з ладу, решта не виконуються і блок вважається невдалим.

(Щоб знайти найповнішу документацію для системної директиви, знайдіть її systemd.directives.)


1

Додатково така лінія, як

Після = -

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.