하나의 대상으로 많은 시스템 서비스를 다시 시작할 수 있습니까?

하나의 대상으로 많은 시스템 서비스를 다시 시작할 수 있습니까?

다시 시작해야 하는 서비스 단위 파일이 많아서 모두 입력하고 싶지 않습니다. 다른 서비스를 시작하는 방법에 대해 아무것도 모르지만 단일 명령으로 모두 다시 시작되도록 그룹화하는 단일 대상 또는 서비스가 있을 수 있습니까?

원하는 경우 시스템 서비스 단위 파일이나 대상 파일을 어떻게 작성합니까 systemctl restart one-to-rule-them-all?

요구 사항: 1. uber 대상은 다른 많은 서비스가 시작되기를 원합니다. 2. 우버 대상은 해당 서비스를 시작하는 방법에 대해 아무것도 몰라야 합니다.

이것을 시도하면 sudo systemctl restart one-to-rule.target아무 일도 일어나지 않습니다.

# /etc/systemd/system/one-to-rule.target
[Unit]
Description=One To Rule Them All
Requires=multi-user.target
Wants=program-api.service  program-gui.service yet-another.service
After=multi-user.target display-manager.service

[Install]
WantedBy=graphical.target

이러한 각 장치 program-api.service program-gui.service yet-another.serviceone-to-rule.target모두 활성화되어 있으며 모두 로드되어 활성화된 것으로 보입니다. 머신을 부팅하면 서비스가 모두 내가 원하는 방식으로 정확하게 제공됩니다. 그러나 systemctl restart one-to-rule.target재부팅하는 대신 그냥 입력하고 싶습니다 .

종속성 그래프는 다음과 같습니다.

$ systemctl list-dependencies one-to-rule.target
one-to-rule.target
● ├─program-api.service
● ├─program-gui.service
● ├─yet-another.service
● └─multi-user.target

$ systemctl list-dependencies --reverse one-to-rule.target
one-to-rule.target
● └─graphical.target

답변1

PartOf=one-to-rule.target이는 작동할 수 있지만 재시작이 전파되려면 각 .service 단위가 있어야 합니다 . (실제로는 의 약한 버전입니다 Requires=<…>.target.)

불행하게도 대상에서 직접 반대 종속성(ConsistsOf)을 지정하는 것은 불가능합니다. 모든 서비스 파일을 확장해야 합니다.

관련 정보