![systemd 선언 전후](https://linux55.com/image/126372/systemd%20%EC%84%A0%EC%96%B8%20%EC%A0%84%ED%9B%84.png)
man에서 systemd 단위에 대해 주어진 정의는 약간 불분명합니다.https://www.freedesktop.org/software/systemd/man/systemd.unit.html
한 장치에
foo.service
설정이 포함되어Before=bar.service
있고 두 장치가 모두 시작되는 경우bar.service
시작은foo.service
시작될 때까지 지연됩니다. [...]는 나열된 장치의 시작이 완료된 후 구성된 장치가 시작되도록 보장하고, 반대로 나열된 장치가 시작되기 전에 구성된 장치가 완전히 시작되는지 확인하는 것과After=
반대입니다 .Before=
After=
Before=
a.service
내가 가지고 있다고 가정 해 봅시다 b.service
. 상황에 따라 다르 므로 a.service
이전에 완전히 부팅 하고 싶습니다 .b.service
b.service
a.service
위 매뉴얼 페이지를 읽은 후에도 다음 사항에 대한 결정적인 설명을 찾을 수 없습니다.
- 너오직유닛 파일
Before=b.service
에 지정 해야 합니다.a.service
- 너오직유닛 파일
After=a.service
에 지정 해야 합니다.b.service
- 당신은해야합니다둘 다
After=a.service
b.service
유닛 파일 에그리고Before=b.service
a.service
유닛 파일 에
어떤 시스템 단위 파일 종속성을 선언해야 합니까? 그게 그렇게 중요한 건가?
답변1
After=
이 장치 중 하나 또는 Before=
장치 쌍 중 하나만 필요합니다 . 다음 매뉴얼 페이지의 내용을 선호할 수도 있습니다 systemctl
.
--after ... After= 종속성은 자동으로 미러링되어 Before= 종속성을 생성합니다.
list-dependencies
systemd가 수행해야 할 작업을 확인 하려면 이 옵션을 사용하십시오 . 예를 들어
$ systemctl list-dependencies --after timers.target
timers.target
* |-sysstat-collect.timer
* |-sysstat-summary.timer
* |-systemd-tmpfiles-clean.timer
* `-unbound-anchor.timer
$ systemctl list-dependencies --before sysstat-collect.timer
sysstat-collect.timer
* |-sysstat-collect.service
* |-shutdown.target
* `-timers.target
전환하는 경우 upstart
몇 가지 팁을 얻을 수 있습니다.여기, 나열된 모든 블로그를 읽을 수 있습니다.여기제목 아래관리자를 위한 systemd 블로그 시리즈.