내 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