조건부 단위에 따른 서비스 주문

조건부 단위에 따른 서비스 주문

시작 시 process_queue서비스 ConditionDirectoryNotEmpty=/unfinished_queue_jobs가 시작되고 디렉터리를 지운 다음 중지됩니다.

서비스는 완료 시 시작되거나 이 종속성에 대한 조건이 실패하는 경우 즉시 시작되어야 accept_new_jobs합니다 .process_queue

이상적으로는, 유닛 파일은 어떤 방식으로든 참조될 process_queue필요가 없습니다 ( 등).accept_new_jobsBefore=

systemd를 사용하여 이러한 종속성을 표현하는 가장 좋은 방법은 무엇입니까?

답변1

실패한 조건이나 어설션으로 인해 장치가 "실패" 상태로 전환되지는 않습니다. 대기 중인 시작 작업을 실행할 때 조건과 어설션을 확인하세요. 주문 종속성은 여전히 ​​존중되므로 해당 유닛이 성공적으로 활성화된 것처럼 다른 유닛을 가져와서 주문하고, 유닛이 정상적으로 시작되는 정확한 순간에 조건과 어설션이 실행되므로 이전에 주문한 후 시스템 상태를 확인할 수 있습니다. 장치 초기화가 완료되었습니다.

[After= 및 Before=]는 Requires=, Wants=, Requisite= 또는 BindsTo=로 구성된 요구 사항 종속성과 독립적이며 직교합니다. After= 및 Wants= 옵션에 장치 이름을 포함하는 것이 일반적인 패턴입니다. 이 경우 나열된 장치는 이러한 옵션으로 구성된 장치보다 먼저 시작됩니다.

그래서 저는 이것을 달성하기 위해 After=와 Wants=를 사용할 수 있다고 생각했습니다. 테스트해 보겠습니다.

관련 정보