Reinicie o serviço do systemd quando a saída não for mais gerada

4

É possível reiniciar um serviço systemd quando não há saída gerada por um período de tempo predefinido?

Eu tenho um script que aparentemente pode travar, mas isso não é detectado pelo systemd (ou Python para esse caso) e, portanto, ele não entra no estado de falha.

No entanto, ele pára de registrar a saída, portanto, eu deveria poder reiniciar o serviço depois que nenhuma saída for dada por um minuto. Isso é possível com o systemd?

Meu arquivo systemd atual:

[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
    
por Bob Van de Vijver 25.07.2016 / 00:50

1 resposta

1

Eu não acho que o systemd permita que você faça isso, pelo menos o systemd.service(5) página de manual não parece mencionar nada disso.

No entanto, o que você poderia fazer é usar o watchdog integrado do systemd.

Você faria isso pelas configurações WatchdogSec= e, em seguida, enviaria o serviço WATCHDOG=1 com sd_notify regularmente. Se você definir WatchdogSec=30 , seu serviço deverá notificar o sistema no máximo a cada 30 segundos.

Quando seu serviço trava, ele não notifica mais o systemd, e o systemd mata o seu serviço como resultado.

Com restart=on-watchdog (que você já tem, mas não faz nada sem WatchdogSec= ), o systemd irá reiniciar seu serviço depois de ser morto pelo watchdog.

    
por 25.07.2016 / 08:32