systemd에서 프로세스 중지와 프로세스 시작 사이에 지연 추가 프로세스가 완료되기 전에 새 프로세스가 시작됩니다. 이것은 시작

에 정말 이상한 문제가 systemd있습니다. 내가 발행 systemctl restart하면 이전 프로세스가 완료되기 전에 새 프로세스가 시작됩니다.

이것은 시작 메시지 ( “opening log”) 후에 최종 종료 메시지 ( “closing log”)가 기록되는 로그에서 볼 수 있습니다.

프로세스 중지와 시작 사이에 지연을 추가 할 수있는 방법이 있습니까?



답변

시스템 서비스 파일에서 RestartSec 옵션을 설정하여 재시작 지연을 추가 할 수 있습니다. 아래 예를 참조하십시오.

[Service]
Restart=always
RestartSec=30

더 많은 예제를 보려면 이 링크확인하십시오 .


답변

RestartSec은 특정 서비스가 systemctl restart 명령을 통해 다시 시작되는 서비스 인 경우에만 사용되는 것으로 보입니다.

예를 들어 A와 B의 두 가지 서비스가 있습니다.

[Unit]
Requires=network-online.target
[Service]
ExecStart=A-stuff
Restart=always

[Unit]
Requires=A.service
After=A.service
[Service]
ExecStart=B-stuff
Restart=always
RestartSec=30

systemctl restart B를 수행하면 예상대로 작동하지만 systemctl restart A를 수행하면 두 서비스가 모두 중지되고 즉시 다시 시작됩니다.

Systemd는 분명히 지정한 하나의 서비스에 대한 구성 값만 사용하고 종속성에 대해서는 무시합니다.

이것은 들리는 것처럼 드문 일이 아닙니다. B가 원격 서버와 통신하는 경우 원격 엔드가 클라이언트를 거부하여 신속하게 시작 및 중지하지 못할 수 있습니다. 그러나 A를 B로 변경하지 않고 업데이트 할 때마다 A를 직접 다시 시작해야합니다.

지연을 A에 추가 하여이 문제를 해결할 수도 있지만 종속성이 아닌 경우 B에 대해 A를 알려 객체 격리를 중단 하므로이 작업을 수행하지 않아도됩니다.


답변