systemd는 실패 시 서비스를 다시 시작할 수 없습니다.

systemd는 실패 시 서비스를 다시 시작할 수 없습니다.

pacman -Sy시작 시 한 번 실행되는 RefreshPacman.service라는 서비스 파일이 있습니다 . 그러나 After=network-online.targetVPN이 아닌 라우터에 대한 연결만 고려되므로 팩맨은 미러에 연결할 수 없습니다. 처음에는 팩맨을 사용한 refreshPacman.timer후 60초만 기다려 이 문제를 해결하려고 했지만 network-online.target이로 인해 랩톱이 로그인 시간을 초과한 후(나에게는 너무 느림) 팩맨이 새로 고쳐지거나 어떤 이유로 새로 고침 실패 유형을 잊어버린 경우가 발생합니다.

이전 서비스 파일을 수정하여 더 나은 솔루션을 만들려고 노력했는데, 이로 인해 systemd는 성공하거나 포기하기 전에 몇 번 서비스 로드를 시도하게 되었습니다. 서비스를 작동할 수 없게 된 후 현재 다음과 같은 상태입니다.

[Unit]
Description=refreshes pacman's database
Wants=network-online.target
Wants=mullvad-daemon.service
After=network-online.target
After=mullvad-daemon.service

StartLimitIntervalSec=180s
StartLimitBurst=3

[Service]
Type=oneshot
ExecStart=/usr/bin/pacman -Sy
RemainAfterExit=true

StandardOutput=journal

Restart=on-failure
RestartSec=60s

[Install]
WantedBy=multi-user.target

내가 이해한 바로는 다음과 같아야 합니다.

1. run the `ExecStart` once, (fail)
2. wait `RestartSec` seconds, (maby fail?)
3. repeat step 2 `StartLimitBurst` number of times

그러나 둘 다에 따르면 journalctl -u refreshPacman.service -b새로 /var/log/pacman.log고침 명령은 포기하기 전에 한 번만 실행됩니다. 내용을 업데이트한 후 서비스를 비활성화하고 다시 활성화했는지 확인했지만(systemd가 내가 가리키는 기호를 편집한 파일을 좋아하지 않는 경우) 작동하게 할 수 없습니다. systemd가 일반적으로 작동하는 방식에 대한 나의 이해는 여전히 매우 제한적이므로 일반적으로 실패 또는 다시 시작이 작동하는 방식을 오해하고 있는지 잘 모르겠습니다.

편집하다

나는 다른 서비스 파일을 가지고 놀고 있는데 어떤 이유로 시간이 다음과 같이 업데이트되었습니다.

# nothing changed here

StartLimitIntervalSec=120s
StartLimitBurst=12

# nothing changed here

RestartSec=10s

서비스가 제대로 작동하도록 허용하십시오. 내 테스트에서 너무 비대해진 타이머를 사용하고 있어서 로그 파일을 열 때 여전히 다시 로드되지 않는 것 같습니다...

편집 2

답변을 선택할 수 없으므로 이 질문을 닫는 방법을 모르겠습니다.

답변1

systemd (아마도) 작업을 다시 시작하는 데 너무 오래 기다립니다(질문을 닫을 수 있도록 답변)

관련 정보