systemctl --failed não listando serviço instanciado com falha

0

Eu criei e configurei com sucesso um modelo systemd para gerar facilmente instâncias de serviços similares.

o modelo é assim:

[Unit]
Description=my awesome service %I
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/binary -c /path/to/config/%i.conf
ExecStop=/usr/bin/pkill --full %i
Restart=on-failure
User=root
Group=root
TimeoutSec=30

[Install]
WantedBy=multi-user.target

Eu habilitei e iniciei a instância com systemcl enable nome @ kkk, systemctl start nome @ kkk e não criei um arquivo /path/to/config/kkk.conf, então o serviço falha:

~# systemctl status [email protected][email protected] - my awesome service  kkk
   Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Wed 2017-10-04 15:20:09 CEST; 3min 27s ago
  Process: 30116 ExecStop=/usr/bin/pkill --full %i (code=exited, status=1/FAILURE)
  Process: 30113 ExecStart=/usr/local/bin/binary -c /path/to/config/kkk.conf (code=exited, status=1/FA
 Main PID: 30113 (code=exited, status=1/FAILURE)

Oct 04 15:20:08 host systemd[1]: [email protected]: Unit entered failed state.
Oct 04 15:20:08 host systemd[1]: [email protected]: Failed with result 'exit-code'.
Oct 04 15:20:09 host systemd[1]: [email protected]: Service hold-off time over, scheduling restart.
Oct 04 15:20:09 host systemd[1]: Stopped my awesome service for kkk.

Se eu executar systemctl --failed, obtenho

0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

que obviamente não está correto, porque o serviço falhou. Estou fazendo algo errado ou faltando alguma coisa aqui? TIA.

    
por natxo asenjo 04.10.2017 / 15:48

2 respostas

0

O serviço não está em estado de falha. Como você pode ver aqui:

Active: inactive (dead) (Result: exit-code) since Wed 2017-10-04 15:20:09 CEST; 3min 27s ago

É inactive (dead) . Se falhou você teria algo assim:

Active: failed (Result: exit-code)

Para ver os serviços com falha e inativo , use o comando:

systemctl --failed --all
    
por 04.10.2017 / 16:00
0

Este é um bug no systemd, onde um serviço que falha em todas as suas reinicializações é listado como "inativo" em vez de "falhou". No meu teste, ocorre em 229 (padrão com o Ubuntu Xenial) e é corrigido em 238; talvez algum snooping de changelog revele qual versão o corrigiu.

A melhor solução parece ser remover Restart de seu arquivo de serviço e manipular manualmente a reinicialização por conta própria.

    
por 01.04.2018 / 23:17

Tags