a.service
수정할 수 없는 것과 수정할 수 있는 것이 있다고 가정해 보겠습니다 b.service
. 다음 정지 명령을 보고 싶습니다.
Stopping b.service ...
Stopped b.service
Stopping a.service ...
Stopped a.service
대신에:
Stopping b.service ...
Stopping a.service ...
Stopped b.service
Stopped a.service
b.service
이 작업을 완료하는 데 최소 20초가 걸릴 것이라고 가정 해 보겠습니다 .
답변1
b.service
일찍 멈추려 면 a.service
실제로 주문해야합니다b.service
뒤쪽에 a.service
, 서비스가 중지되는 순서가 시작되는 순서와 반대이기 때문입니다.
따라서 이것은 설명하는 내용을 달성하기에 충분해야 합니다.
# b. 서비스 단위 파일 [단위] 설명 =... 이후=a.service [제공하다] ...
보다After=
선적 서류 비치man systemd.unit
, 이는 다음과 같습니다.
순차 종속성을 갖는 두 장치가 종료되면 시작 순서가 반대가 됩니다. 즉, 한 장치가 다른 장치 위에 구성된 경우
After=
두 장치가 모두 종료되면 전자가 후자보다 먼저 중지됩니다.
b.service
또한 종료하는 데 최소 20초가 걸리면 어떻게 되는지 질문하셨습니다 . 괜찮아요. 올바르게 구성된 경우 b.service
systemd는 장치가 완료를 중지할 때까지(즉, ExecStop=
어떤 방식으로 잘못 구성되지 않은 경우), 시간 초과에 도달하기 전에 중지할 때까지 이를 모니터링할 수 있습니다(참조TimeoutStopSec=
b.service
), 그러면 systemd는 종료를 초기화하기 전에 완전히 멈출 때까지 기다립니다 a.service
.
답변2
systemctl
주어진 순서대로 이러한 작업을 중지하려면 다음과 같이 호출할 수 있습니다.
$ systemctl stop a.service && systemctl stop b.service
또는
$ systemctl stop a.service; systemctl stop b.service