맞춤 목표를 활성화하는 올바른 방법

맞춤 목표를 활성화하는 올바른 방법

(나는 이 질문을 교차 게시했습니다.시스템깃허브)

두 개의 데몬이 있습니다. 하나는 인스턴스에 의존하는 서비스입니다.[이메일 보호됨]. 나는 그것의 이름이 무엇인지 반드시 알지 못한다.[이메일 보호됨]인스턴스는 단위 파일에 쓸 때이지만 a.service는 확실히 실행 중인 인스턴스 중 하나에 따라 달라집니다.

내 솔루션은 b.target을 만드는 것이었습니다.[이메일 보호됨]PartOf=a.target및 을 포함합니다 WantedBy=a.target.

나는 graphic.target이 시작될 때마다 b.target이 시작되기를 원하므로 이상적으로는 b.target이 되기를 원합니다 WantedBy=graphical.target. a.service도 이어야 하지만 and도 WantedBy=graphical.target되어야 합니다 (b.target을 시작해서는 안 되며 b.target이 시작되지 않으면 실패해야 함).Requisite=b.targetAfter=b.target

 [  a.service   ]
|                |
|   Depends on   |  
v                v     
 [  b.target    ]   <--is part of--[[email protected]]
|                |
|   Should be    |
|   started by   |
v                v
[graphical.target]

이것systemd.target 문서target 을 설치하려면 use 절을 ​​지정하세요 Requires=. 하지만 이렇게 하면 실제로는 필수By 또는 WantedBygraphical.target이 되기를 원할 때 종속성 순환이 생성됩니다. 그 반대는 아닙니다.

WantedBy=graphical.target이는 b.target에 [Install] 섹션을 추가한 경우에만 작동합니다. 문서에는 이 작업을 수행해야 한다는 내용이 나와 있지 않지만 작동합니다. 시작 시 graphic.target이 b.target을 올바르게 시작하고 b.target이 시작됩니다.[이메일 보호됨], graphic.target도 a.service를 시작합니다. 이는 올바르게 대기합니다.[이메일 보호됨]시작.

인스턴스화된 서비스에 의존하는 서비스를 처리하는 올바른 방법입니까? 이것이 대상 간의 종속성을 처리하는 올바른 방법입니까? 무언가가 작동한다고 해서 그것이 반드시 올바른 방법이라는 것을 의미하는 것은 아닙니다. 특히 systemd에는 작업을 수행하는 "시스템 방식"이 있으므로 따르기만 하면 나중에 문제가 완화되는 경우가 많습니다.

관련 정보