ExecStartPre
서비스가 시작되기 전에 DNS 확인이 제대로 작동하는지 확인하는 데 특히 오랜 시간이 걸리는 시스템 서비스가 있습니다 . 이 명령이 시간 초과될 때마다(기본적으로 DNS가 작동할 때까지) 서비스를 다시 시작하고 싶습니다. 여기에서 이 조각을 얻었습니다.여기.
예, 설정으로 인해 TimeoutStartSec
시작 시간 초과가 늘어나 ExecStartPre 명령 실행이 완료될 수 있다는 것을 알고 있습니다. 이것은 기술적으로 가능하지만 다른 것을 찾고 있습니다. 즉, ExecStartPre
90초가 채 걸리지 않을 때까지 서비스를 계속 다시 시작하는 방법입니다.
지금까지 나는 시간 초과를 포착할 수 있기를 바라면서 하나의 구성 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.