특정 시스템 서비스로 시스템 서비스를 시작/종료하시겠습니까?

특정 시스템 서비스로 시스템 서비스를 시작/종료하시겠습니까?

나는 시스템을 가지고 있습니다 :

  • 서비스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종료됩니다 .service1systemctl stop service1SIGKILL

이 작업을 어떻게 구성 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가져왔고 , 동시에 평화도 가져왔습니다 .service2service3systemctl stop service1service2service3

PartOf일부 작업을 사용하거나 수행할 수도 있지만 BindsTo이를 위해서는 종속 서비스( service2service3)를 변경해야 합니다.

관련 정보