Systemd BindPaths=가 작동하지 않습니다

Systemd BindPaths=가 작동하지 않습니다

BindPaths=나는 systemd를 사용하여 Debian 8 시스템에서 이 지시문이 어떻게 작동하는지 테스트하려고 합니다 .

현재 서비스에 대한 기본 단위 파일이 있습니다.

[Unit]
Description="Simple Test Service"
BindPaths=/path:/bindmount/path:norbind

[Service]
ExecStart=/usr/bin/long_running_program --flags
Restart=always

[Install]
WantedBy=multi-user.target

findmnt서비스 시작 전후에 실행을 해보니 /bindmount/path바인드 마운트가 전혀 나열되지 않습니다.

마운트 위치를 바인딩 ls하거나 바인딩 하면 .ls -a/bindmount/path/path

예상대로 작동하지 않는 이유는 무엇입니까?

systemd BindPath= 매뉴얼 페이지를 참조하십시오.그것은 말한다:

이 옵션은 시스템 서비스에만 적용되며 Service Manager의 사용자별 인스턴스에서 실행되는 서비스에는 지원되지 않습니다.

Service Manager의 사용자별 인스턴스에서 실행 중인지, 아니면 시스템 서비스를 실행 중인지 어떻게 알 수 있나요? 내 서비스가 /etc/systemd/systemvs에 있는지 여부에 따라 결정되나요 /lib/systemd/system?

답변1

BindPaths옵션을 사용하면 장치에서 실행 중인 프로세스에 파일이 표시됩니다. 이는 서비스를 시작하기 위해 명령을 입력하는 셸에서는 전혀 표시되지 않습니다. 어떤 파일 시스템이 마운트되었는지 언제든지 확인할 수 있지만 /proc/mountsBindPaths를 사용하여 서비스를 실행하는 경우 파일 시스템이 올바르게 마운트되었는지 확인하는 유일한 방법은 다음을 확인하는 것입니다./proc/서비스 PID/mounts. 후자는 프로세스가 마운트한 파일 시스템 목록입니다.

마지막 질문에 관해서: /lib/systemd/system모든 일반 유닛 파일을 포함하는 동시에 /etc/systemd/system사용자 정의 유닛 파일과 유닛 간의 모든 종속성도 포함합니다. 각 사용자 인스턴스는 systemctl --user홈 디렉터리 트리의 단위 파일을 사용하여 실행하고 참조합니다.

관련 정보