Eu tenho uma systemd
unidade de serviço simples para reiniciar meu python
script em saídas incondicionais definidas Restart=always
na definição de serviço. Eu só quero ter certeza absoluta, mesmo que o script trave de alguma forma, posso reiniciá-lo ativando a WatchdogSec=
variável no arquivo de unidade.
Meu problema é que os documentos oficiais do diário do systemd não explicam isso claramente.
Citando da mesma página,
WatchdogSec=
Configura o tempo limite do watchdog para um serviço. O watchdog é ativado quando a inicialização é concluída. O serviço deve ligar
sd_notify(3)
regularmente com"WATCHDOG=1"
(ou seja, o "ping de manutenção de atividade").
A parte que não está clara é se o próprio serviço cuidará de manter os pings com o serviço watchdog (ou) o aplicativo que está executando (no meu caso - script Python) precisa manter o ping atualizando a variável de ambiente mencionada.
Minha definição de serviço simples
[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
Então, para este arquivo de serviço, se eu apenas adicionar a linha abaixo, ele reiniciaria meu script automaticamente?
WatchdogSec=30s
Para "dar um tapinha" ou fazer ping no watchdog, você pode usar o pacote python systemd para enviar a notificação: