私の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
しかもこんなラインも
以降=-.マウント
別の「同じマイナス」構文のように見えますが、これは特別なAfter=
システムデバイス-.mount
(ルートマウントポイントなど)を一覧表示するコマンドです。文書:https://www.freedesktop.org/software/systemd/man/systemd.special.html#-.mount