두 개의 시스템 장치 A와 B가 있는데 동시에 실행하면 안 됩니다. 둘 다 동일한 리소스에 대한 액세스를 제공하지만 방식이 다르며, 하나는 다른 것보다 덜 우아하게 "외부에서" 중지를 처리합니다.
이들 사이에 종속성을 지정하면 Conflicts=
단위 중 하나를 시작하면 다른 단위가 중지됩니다. 나는 (한 방향으로) 다음과 같이 더 강한 관계를 선호합니다 Requsite=
.
- A가 이미 시작된 경우 B 시작은 실패합니다.
- B가 이미 시작된 경우 A를 시작하면 B가 중지되고 A도 실패해야 합니다.
이를 수행할 수 있는 방법이 있습니까?
답변1
나는 결국 이렇게 했습니다:
존재하다 B.service
:
[Service]
ExecStartPre=/bin/systemctl stop A.mount
존재하다 A.mount
:
[Unit]
Requires=B-stopped.service
After=B-stopped.service
존재하다 B-stopped.service
:
[Service]
Type=oneshot
ExecStart=/bin/sh -c '! systemctl --quiet is-active B'