systemd 선언 전후

systemd 선언 전후

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.serviceb.servicea.service

위 매뉴얼 페이지를 읽은 후에도 다음 사항에 대한 결정적인 설명을 찾을 수 없습니다.

  • 오직유닛 파일 Before=b.service에 지정 해야 합니다.a.service
  • 오직유닛 파일 After=a.service에 지정 해야 합니다.b.service
  • 당신은해야합니다둘 다 After=a.serviceb.service유닛 파일 에그리고 Before=b.servicea.service유닛 파일 에

어떤 시스템 단위 파일 종속성을 선언해야 합니까? 그게 그렇게 중요한 건가?

답변1

After=이 장치 중 하나 또는 Before=장치 쌍 중 하나만 필요합니다 . 다음 매뉴얼 페이지의 내용을 선호할 수도 있습니다 systemctl.

--after ... After= 종속성은 자동으로 미러링되어 Before= 종속성을 생성합니다.

list-dependenciessystemd가 수행해야 할 작업을 확인 하려면 이 옵션을 사용하십시오 . 예를 들어

$ 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 블로그 시리즈.

관련 정보