
서비스 정의에 정의된 무조건 종료 시 스크립트를 systemd
다시 시작하는 간단한 서비스 단위가 있습니다 . 스크립트가 어떤 식으로든 중단되더라도 유닛 파일에서 변수를 활성화하여 다시 시작할 수 있는지 꼭 확인하고 싶습니다 .python
Restart=always
WatchdogSec=
내 문제는systemd 저널의 공식 문서명확하게 설명하지 않습니다.
같은 페이지에서 인용하면,
WatchdogSec=
서비스에 대한 감시 시간 초과를 구성합니다. 워치독은 시동이 완료되면 활성화됩니다. 서비스는
sd_notify(3)
정기적으로 호출해야 합니다"WATCHDOG=1"
(예: "연결 유지 핑").
불분명한 부분은,서비스자체적으로 감시 서비스(또는) 실행 중인 애플리케이션(제 경우에는 Python 스크립트)으로 핑을 유지 관리해야 하며, 언급된 환경 변수를 업데이트하여 핑을 유지해야 합니다.
내 간단한 서비스 정의
[Unit]
Description=dev-Status: Computes RF device availability status
[Service]
Type=simple
EnvironmentFile=/etc/sysconfig/db_EndPoint
ExecStart=/usr/bin/python /opt/foobar/foobar.py
RestartSec=10
Restart=always
[Install]
WantedBy=default.target
그러면 이 서비스 파일에 아래 줄만 추가하면 스크립트가 자동으로 다시 시작되나요?
WatchdogSec=30s
답변1
워치독을 "팻"하거나 핑하려면 Python을 사용할 수 있습니다.체계화된알림을 보낼 패키지:
from systemd.daemon import notify, Notification
notify(Notification.WATCHDOG)