2017-09-12 27 views
0

내가 systemd 스크립트 내 upstart 스크립트를 번역하고 난 다음 transalting의 가장 좋은 방법이 무엇인지 wondring하고 "에서 시작" Requires= 섹션이 나에게 적합하거나 더 나은 섹션이 있습니까? upstart에 따라

+0

'필수'는 systemd의 단위 섹션이 아닙니다. 유닛 A가 유닛 B에 엄격하게 의존한다는 것을 지정하는 종속성 지정자입니다. 유닛 B가 활성화되지 않으면 유닛 A도 실패합니다 (엄격한 종속성). 나는 신생에 익숙하지 않지만'systemd.unit (5)'를 살펴 본다. – direprobs

답변

0

start onstart on started :이 스탠자는 작업이 자동으로 시작하게됩니다 이벤트의 집합을 정의

6.33 시작.
...
6.33.2 시작이 다른 서비스
start on started other-service

에 따라 달라집니다 그래서 귀하의 경우, start on started postgresql은 그것에 의존하기 때문에 PostgreSQL을 후가 성공적으로 시작했다 시작해야 의미합니다. systemd에서

는 것이라고 :

[Unit] 
Requires=postgresql 
After=postgresql 

때문에 systemd.unit man page에있어서

After=,Before= ... 단위 foo.service가 = 바 전에 설정이있는 경우. 서비스 및 두 장치 모두 시작될 때 bar.service의 시작은 foo.service가 시작될 때까지 지연됩니다. [...] 이후 =는 Before =의 반대입니다. 즉, After =는 나열된 장치가 시작된 후에 구성된 장치가 시작되도록 보장합니다. Before =는 반대로, 구성된 장치가 전에 완전히 시작된 것입니다. 나열된 단위가 시작됩니다.
...
Requires= 다른 장치에 대한 요구 사항 종속성을 구성합니다. 이 유닛이 활성화되면 여기에 나열된 유닛도 활성화됩니다. 다른 장치 중 하나가 활성화되지 않고 실패한 장치에 대한 주문 종속성이 설정되면이 장치는 시작되지 않습니다. [...] 단위 foo.service가 Requires =로 구성된 bar.service 단위를 필요로하고 순서가 After = 또는 Before =로 구성되지 않은 경우 두 단위가 동시에 시작되고 둘 사이에 지연없이 시작됩니다. foo.service가 활성화되었습니다.


stop on에 관해서는

stop on stoppedupstart에 따르면

6.34 정지
이 스탠자
에 정의합니다 자동 인 경우 정지 작업이 원인이 될 것입니다 이벤트의 세트 이미 실행 중입니다.
...
6.34.systemd.unit man page에 따라 위에서 언급 After=postgresql가 다시 때문에 덮여있다
stop on stopped other-service

의존 서비스 후 3 번 :

After=,Before=...] 참고 때 두 그런 그들 사이의 순서 의존성을 갖는 유닛이 셧다운되고, 시동 순서의 반대가 적용된다. 즉 유닛이 다른 유닛에서 After = (후)로 구성된 경우, 두 유닛이 모두 종료되면 후자보다 먼저 유닛이 중지됩니다.