systemd의 종료 순서를 어떻게 예측할 수 있습니까?


9

전체 시스템을 완전히 종료 할 때 서비스를 종료 systemd하는 대략적인 순서 를 알려주 는 방법이 있습니까? systemd병렬로 작업을 종료 할 것이기 때문에 정확한 순서를 알 수있는 방법이 없지만 감사 systemd하여 종료 시퀀스에 어떤 제약 조건 이 적용 되는지 이해하는 것이 좋습니다.

동기 부여는 서비스 파일의 개발 및 디버깅을 위해 실제 종료를 한 다음 다시 부팅하고 결정할 때마다 로그를 검사하는 대신 이 예측 목록을 미리 얻는 것이 훨씬 더 편리하다는 것입니다. 서비스 유닛 파일 변경 또는 systemd 구성의 다른 측면에 영향을주는 것은 시스템 종료 순서에 영향을 미칩니다.

나는 그런 것을 바라고 있었다

systemctl list-dependencies --before shutdown.service

작업을 수행하지만 방출 만 가능합니다.

shutdown.service

답변:


2

다음이 도움이 될 수 있습니다.

systemctl list-dependencies --before shutdown.target

문안 인사,


3
음, 내가 shutdown.target아닌 바보 같은 실수를 지적 해 주셔서 감사합니다 shutdown.service. 그러나 이것은 여전히 ​​내가 요청한 주문 목록을 제공하지 않고 대신 일부 시스템에서 매우 짧은 목록 또는 빈 목록을 제공합니다.
Adam Spiers

불행히도 Systemd는 의도적으로 불투명합니다. oldschool sysvinit 스타일의 경우 시작 파일에 로깅을 추가하고 시작된 프로세스를 타임 스탬프가있는 파일에 등록 할 수 있습니다.
shevy

1
@AdamSpiers @Mohamed Salhi 기본적으로 "이전"은 "이전 시작"을 의미합니다. 이것은 당신이 원하는 명령이 systemctl list-dependencies --after shutdown.target... 최소한 첫 번째 명령이하지 않는 모든 것을 찾을 것임을 의미합니다 . 또한 있기 때문에 혼란 shutdown.target되어 시작 하지만, 다른 모든 유닛이되어 중지 ,이 경우에 당신이없는 문제 여부를 "이전"또는 주문 "다음"; 정지는 두 경우 모두 시작하기 전에 수행됩니다.
sourcejedi

1

종료 순서는 일반적으로 시작 순서와 반대입니다.

즉, 데몬은 모두 종료 신호를 보내며 실제로 종료하고 종료하는 데 많은 시간이 걸립니다.

일반적인 시스템을 유지하면서 어떤 서비스가 어떤 순서로 종료 될지를 유용하게 예측하는 것이 실현 가능하지 않다고 생각합니다. 또한 종속성은 일부 시퀀스를 제어합니다.


1
맞습니다-병렬화로 인해 알고있었습니다. 그러나 정확한 순서는 필요하지 않습니다. 어떤 명령이 시행되고 어떤 것이 병렬로 실행될 수 있습니까? 이를 명확히하기 위해 질문을 업데이트하겠습니다. 또한 "보통"자격이 있습니까? 언제 반대가 아니겠습니까?
Adam Spiers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.