systemd 서비스: 시작하기 전에 시간 초과 시 다시 시작

systemd 서비스: 시작하기 전에 시간 초과 시 다시 시작

ExecStartPre서비스가 시작되기 전에 DNS 확인이 제대로 작동하는지 확인하는 데 특히 오랜 시간이 걸리는 시스템 서비스가 있습니다 . 이 명령이 시간 초과될 때마다(기본적으로 DNS가 작동할 때까지) 서비스를 다시 시작하고 싶습니다. 여기에서 이 조각을 얻었습니다.여기.

예, 설정으로 인해 TimeoutStartSec시작 시간 초과가 늘어나 ExecStartPre 명령 실행이 완료될 수 있다는 것을 알고 있습니다. 이것은 기술적으로 가능하지만 다른 것을 찾고 있습니다. 즉, ExecStartPre90초가 채 걸리지 않을 때까지 서비스를 계속 다시 시작하는 방법입니다.

지금까지 나는 시간 초과를 포착할 수 있기를 바라면서 하나의 구성 Restart=on-abnormal과 하나를 시도했습니다 . Restart=on-failure그들은하지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.

서비스 파일:

[Unit]
Description=thing
After=network-online.target

[Service]
Type=simple
ExecStartPre=/bin/sh -c 'until host google.com; do sleep 1; done'
ExecStart=python ...script.py
Restart=on-failure
RestartSec=60
...

[Install]
WantedBy=multi-user.target

다시 시작한 후 로그인하세요.

-- Boot 16978e49888146259f843055bfa26399 --
Oct 03 02:26:05 thing systemd[1]: Starting thing...
Oct 03 02:26:15 thing sh[609]: ;; connection timed out; no servers could be reached
Oct 03 02:26:26 thing sh[934]: ;; connection timed out; no servers could be reached
Oct 03 02:26:37 thing sh[973]: ;; connection timed out; no servers could be reached
Oct 03 02:26:48 thing sh[1003]: ;; connection timed out; no servers could be reached
Oct 03 02:27:00 thing sh[1038]: ;; connection timed out; no servers could be reached
Oct 03 02:27:11 thing sh[1066]: ;; connection timed out; no servers could be reached
Oct 03 02:27:22 thing sh[1101]: ;; connection timed out; no servers could be reached
Oct 03 02:27:33 thing sh[1131]: ;; connection timed out; no servers could be reached
Oct 03 02:27:35 thing systemd[1]: thing.service: start-pre operation timed out. Terminating.
Oct 03 02:27:35 thing systemd[1]: thing.service: Control process exited, code=killed, status=15/TERM
Oct 03 02:27:35 thing systemd[1]: thing.service: Failed with result 'timeout'.
Oct 03 02:27:35 thing systemd[1]: Failed to start thing.

관련 정보