나는 시스템을 가지고 있습니다 :
- 서비스1.서비스
- 서비스2.서비스
- 서비스3.서비스
service1.service는 다음과 같습니다.
[Unit]
Wants=service2.service service3.service
After=service2.service service3.service
[Service]
ExecStart=/var/scripts/script.sh
[Install]
WantedBy=multi-user.target
이 service1.service는 해야 할 일을 수행합니다. it brings up services 2 and 3 before ExecStart
이는 제가 필요한 작업의 50%입니다. 나머지 50%는 종료 service2
되거나 종료 되거나 다른 종료 시 service3
종료됩니다 .service1
systemctl stop service1
SIGKILL
이 작업을 어떻게 구성 service2
/ service3
수행해야 합니까?
답변1
보고 있다문서, 여러 가지 옵션을 사용할 수 있는 것 같습니다.
가장 간단한 PropagatesStopTo=
옵션은 아마도 다음과 같습니다.
PropagatesStopTo=
,StopPropagatedFrom=
중지 요청이 전파되어야 하는 하나 이상의 장치에 대한 공백으로 구분된 목록입니다. 장치에 대한 중지 요청을 발행하면 이 두 가지 설정을 사용하여 해당 장치에 연결된 모든 장치에 대한 중지 요청이 자동으로 대기열에 추가됩니다.
service1.service
다음과 같이 설정하면:
[Unit]
Wants=service2.service service3.service
After=service2.service service3.service
PropagatesStopTo=service2.service service3.service
[Service]
Type=exec
ExecStart=...
그러다가 평화를 systemctl start service1
가져왔고 , 동시에 평화도 가져왔습니다 .service2
service3
systemctl stop service1
service2
service3
PartOf
일부 작업을 사용하거나 수행할 수도 있지만 BindsTo
이를 위해서는 종속 서비스( service2
및 service3
)를 변경해야 합니다.