더 이상 출력이 생성되지 않으면 systemd 서비스를 다시 시작하십시오.

더 이상 출력이 생성되지 않으면 systemd 서비스를 다시 시작하십시오.

미리 정의된 시간 내에 출력이 생성되지 않으면 systemd 서비스를 다시 시작할 수 있습니까?

분명히 정지되는 스크립트가 있지만 systemd(또는 이 경우 Python)가 이를 감지하지 못하므로 실패 상태로 전환되지 않습니다.

그러나 출력 로깅이 중지되므로 1분 동안 출력이 없으면 서비스를 다시 시작할 수 있습니다. systemd를 사용하여 이를 달성할 수 있습니까?

내 현재 시스템 파일:

[Unit]
Description=SOmething
After=network.target

[Service]
WorkingDirectory=/home/user/system/something
User=nobody
ExecStart=/usr/bin/python2 something.py
Restart=on-watchdog
RestartSec=10s

[Install]
WantedBy=multi-user.target

답변1

나는 systemd가 적어도 이것을 할 수 있다고 생각하지 않습니다.systemd.service(5)매뉴얼 페이지에는 그런 내용이 언급되지 않은 것 같습니다.

그러나 당신이 할 수 있는 일은 systemd에 내장된 watchdog을 사용하는 것입니다.

WatchdogSec=정기적으로 서비스를 설정하고 전송하면 WATCHDOG=1이를 수행 할 수 있습니다 sd_notify. 이를 설정한 경우 WatchdogSec=30서비스는 최소한 30초마다 systemd에 알려야 합니다.

서비스가 중단되면 더 이상 systemd에 알리지 않으며 systemd는 그에 따라 서비스를 종료합니다.

restart=on-watchdog(이미 가지고 있지만 그것 없이는 아무 것도 할 수 없음 )을 사용하면 WatchdogSec=감시자에 의해 서비스가 종료된 후 systemd가 서비스를 다시 시작합니다.

관련 정보