Systemd - RestartSec를 StartLimitIntervalSec와 쌍으로 연결합니다. 이 구성에 문제가 있나요?

Systemd - RestartSec를 StartLimitIntervalSec와 쌍으로 연결합니다. 이 구성에 문제가 있나요?

Debian 11용 systemd 서비스 파일을 만들었습니다. 항상 실행되어야 하는 python3 스크립트에 사용됩니다.

[Unit]
Description=Printer service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=user1
WorkingDirectory=/home/user1/myproject
ExecStart=/home/user1/myproject/venv/bin/python3 /home/user1/myproject/myscript.py

[Install]
WantedBy=multi-user.target

스크립트를 다시 시작하는 데 시간이 얼마나 걸리는지 잘 모르겠습니다. 가치를 더해야 하나요 RestartSec? 아무래도 이 지시를 이해하지 못한 것 같습니다. 스크립트가 완전히 활성화되는 데 5초가 걸린다고 가정하면 중단되나요 RestartSec=1?

StartLimitIntervalSec=0또한 특정 횟수의 실패 후 systemd가 서비스 활성화를 중지하는 속도에 제한을 두지 않았기 때문에 덧붙였습니다 . 어떤 이유로든 서비스가 실패하면 systemd는 영원히 다시 시작하려고 합니까? 지정하지 않으면 어떻게 되나요 User?

마지막으로, 명령어 간에 비호환성이 있습니까?

답변1

man systemd.service설명하다:

다시 시작 시간 =

서비스를 다시 시작하기 전에 절전 시간을 구성합니다(Restart=를 사용하여 구성). 단위 없는 초 단위 값 또는 "5min 20s"와 같은 시간 범위 값을 사용합니다. 기본값은 100밀리초입니다.

서비스가 다운되거나 실패한 시간입니다. 스크립트를 시작하는 데 시간이 좀 걸리더라도 "활성화" 단계에 있으므로 괜찮습니다.

                     |----RestartSec------|
---------|-----------|--------------------|------------|----------
 running    stopping    stopped             starting     running

man systemd.unit설명하다:

StartLimitIntervalSec=간격, StartLimitBurst=버스트

Hive 시작 속도 제한. 착공 횟수가 초과되었습니다.터지다시간 이내간격해당 기간은 다시 시작할 수 없습니다. StartLimitIntervalSec=를 사용하여 확인 간격을 구성하고 StartLimitBurst=를 사용하여 간격당 허용되는 시작 횟수를 구성합니다.

간격시간 범위이며 기본 단위는 초이지만 다른 단위를 지정할 수도 있습니다. systemd.time(5)을 참조하세요. 관리자 구성 파일의 기본값은 DefaultStartLimitIntervalSec=입니다.모든 종류의 속도 제한을 비활성화하려면 0으로 설정할 수 있습니다..터지다관리자 구성 파일에서 DefaultStartLimitBurst=로 기본 설정되는 숫자입니다.


따라서 이것이 있으면 충돌이 발생하지 않습니다.

Restart=always
RestartSec=1s
StartLimitIntervalSec=3s
StartLimitBurst=2

수행할 작업은 다음과 같습니다.

  • 장치가 중지/오류가 발생하면 1초 동안 기다린 후 다시 시작하세요.
  • 장치가 3초 이내에 2번 부팅되지 않으면 장치 재부팅 시도를 중지하세요.

당신이 가진 전부라면 :

Restart=always

그런 다음 기본값을 사용합니다. 즉, 다음을 의미합니다.

Restart=always
RestartSec=100ms
StartLimitIntervalSec=10s
StartLimitBurst=5

그러면 당신의 행동은 다음과 같을 것입니다:

  • 장치가 중지되면 100밀리초 동안 기다렸다가 다시 시작하십시오.
  • 장치가 10초 이내에 5번 시작되지 않으면 장치 다시 시작 시도를 중지하십시오.

귀하의 의견에 따르면 "모든 종류의 속도 제한을 비활성화할 수 있습니다"라고 합니다.

Restart=always
StartLimitIntervalSec=0

그러면 당신의 행동은 다음과 같을 것입니다:

  • 장치가 중지되면 100밀리초 동안 기다렸다가 다시 시작하십시오.
  • 비율 제한 없음

관련 정보