S1, S2,... S10
중요한 서비스 C1이 초기화된 후에만 시작할 수 있는 여러 서비스(예: )가 있습니다 . C1은 /var/run/critical.init
초기화가 완료되었음을 나타내는 파일(예: )에 씁니다 . 이 시점에서 각 서비스는 S1..S10
systemd에 의해 시작되어야 합니다.
위의 구현을 시도할 때 .path
시스템 기반 활성화를 사용하고 다음 S1
에 대한 .path 파일이라는 두 개의 파일을 만들었습니다.
$ cat s1.path
[Path]
PathExists=/var/run/critical.init
Unit=s1.service
[Install]
WantedBy=multi-user.target
$ systemctl enable s1.path
그리고 서비스 자체를 설명하는 파일은 다음과 같습니다.
$ cat s1.service
[Unit]
Description=Some service
After=syslog.target
[Service]
ExecStart=/usr/bin/s1
Type=simple
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl status s1
재부팅 후 장치가 활성화된 것으로 표시되는지 확인했습니다 S1
.아니요ps -ef
(예상대로) 출력의 열 . 파일을 수동으로 생성 한 직후 /var/run/critical.init
systemd가 장치를 시작했습니다 s1
.
위의 실험을 통해 경로 기반 활성화가 단위에 대해 작동한다는 것을 확인했습니다. 이제 이것을 모든 서비스로 확장하고 싶습니다 S1...S10
.
가장 확실한 방법은 .path
서비스별로 파일을 작성하는 것이지만, 저는 좀 더 우아한 솔루션을 찾고 있습니다.
systemd를 사용하여 이 문제를 해결할 수 있습니까 target
? 각 서비스가 의 일부 가 아닌 S1...S10
새로운 의 일부인 경우 의 모든 단위가 트리거되기 전에 종속성이 존재하도록 설정할 수 있습니까 ? 다른 제안도 환영합니다.critical.target
multi-user.target
/var/log/critical.init
critical.target