表 1. 特殊可执行前缀

表 1. 特殊可执行前缀

在我的 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

我怀疑(通过一些谷歌搜索证实)这=-意味着如果指定的文件不存在,服务不应失败。但是我未能在 systemd 单元文件的联机帮助页中找到该行为。作业的官方文档在哪里=-

答案1

这记录在systemd.exec

EnvironmentFile=

[...]

传递的参数应该是绝对文件名或通配符表达式,可以选择以“ -”为前缀,这表示如果文件不存在,则不会读取该文件,并且不会记录错误或警告消息。

并且在systemd.service

ExecStart=

……

对于每个指定的命令,第一个参数必须是可执行文件的绝对路径。或者,该文件名可以添加一些特殊字符作为前缀:

表 1. 特殊可执行前缀

……

ExecStartPre=,ExecStartPost=

……

如果这些命令(不带前缀-)中的任何一个失败,则其余命令不会执行,并且该单元被视为失败。

(要查找 systemd 指令的最完整文档,请在systemd.directives.)

答案2

另外,像这样的行

之后=-.mount

看起来像另一个“等于减”语法,但它只是一个After=列出特殊系统单元-.mount(即根挂载点)的指令。文件:https://www.freedesktop.org/software/systemd/man/systemd.special.html#-.mount

相关内容