Systemd-Unit

systemd 單元文件中 =- (等於減號)的文件

  • November 29, 2019

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

我懷疑(通過一些Google搜尋確認)這=-意味著如果指定的文件不存在,服務不應該失敗。但是我未能在 systemd 單元文件的聯機幫助頁中找到該行為。作業的官方文件在哪裡=-

這記錄在systemd.exec

EnvironmentFile=

$$ … $$ 傳遞的參數應該是絕對文件名或萬用字元表達式,可選前綴“ -”,表示如果文件不存在,則不會讀取它,並且不會記錄錯誤或警告消息。

並在systemd.service

ExecStart=

… 對於每個指定的命令,第一個參數必須是執行檔的絕對路徑。或者,這個文件名可以帶有一些特殊字元的前綴: 表 1. 特殊的可執行前綴

ExecStartPre=, ExecStartPost= … 如果這些命令中的任何一個(不以 為前綴-)失敗,則不會執行其餘命令,並且該單元被視為失敗。

(要查找 systemd 指令的最完整文件,請在 中查找systemd.directives。)

引用自:https://unix.stackexchange.com/questions/404199