Systemd não reinicia o monit após o kill

0

Eu habilitei o systemd para carregar o monit na inicialização

sudo systemctl enable monit
sudo systemctl restart monit
ps aux | grep monit
root      6843  0.0  0.2 112492  2948 ?        Sl   18:19   0:00 /usr/bin/monit -c /etc/monit/monitrc
lookpla+  6857  0.0  0.0  14212  1008 pts/0    S+   18:21   0:00 grep --color=auto monit

Mas quando eu mato monit, não começa de novo:

 sudo kill 6843
 ps aux | grep monit
 lookpla+  6862  0.0  0.1  14212  1028 pts/0    S+   18:23   0:00 grep --color=auto monit

O Systemctl mostra que o monit está ativo, mas saiu

sudo systemctl status monit.service
● monit.service - LSB: service and resource monitoring daemon
   Loaded: loaded (/etc/init.d/monit; generated; vendor preset: enabled)
  Drop-In: /etc/systemd/system/monit.service.d
           └─override.conf
   Active: active (exited) since Wed 2017-09-06 18:19:17 UTC; 4min 29s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 6830 ExecStop=/etc/init.d/monit stop (code=exited, status=0/SUCCESS)
  Process: 6835 ExecStart=/etc/init.d/monit start (code=exited, status=0/SUCCESS)
 Main PID: 6843 (code=exited, status=0/SUCCESS)

Sep 06 18:19:17 localhost systemd[1]: Stopped LSB: service and resource monitoring daemon.
Sep 06 18:19:17 localhost systemd[1]: Starting LSB: service and resource monitoring daemon...
Sep 06 18:19:17 localhost monit[6835]:  * Starting daemon monitor monit
Sep 06 18:19:17 localhost monit[6835]:    ...done.
Sep 06 18:19:17 localhost systemd[1]: monit.service: PID file /run/monit.pid not readable (yet?) after start: No such file or directory
Sep 06 18:19:17 localhost systemd[1]: Started LSB: service and resource monitoring daemon.

Você poderia me ajudar a configurar o systemd para que ele reinicie o monitor depois que ele for eliminado?

Eu uso o ubuntu 17.04

    
por Hirurg103 06.09.2017 / 20:26

2 respostas

1

Acredito que a adição da opção Restart ao seu arquivo systemd service garantirá que ele comece quando não for interrompido pelo comando systemctl stop :

Restart=[no | on-success | on-failure | on-abnormal | on-watchdog | on-abort | always ]

Informação:

não: o padrão, o serviço não será reiniciado

on-success: será reiniciado somente quando o processo do serviço sair corretamente

na falha: será reiniciado quando o processo sair com um código de saída diferente de zero

on-abort: será reiniciado apenas se o processo do serviço sair devido a um sinal não detectado não especificado como um status de saída limpo

on-watchdog: será reiniciado somente se o tempo limite do watchdog para o serviço expirar

sempre: será reiniciado, independentemente de ter saído de forma limpa ou não, ter terminado de forma anormal por um sinal ou ter atingido um limite de tempo

% bl0ck_qu0te%

Fonte da imagem

Fonte:

link

    
por George Udosen 06.09.2017 / 21:18
0
A opção de configuração

RemainAfterExit fez o truque

Após horas de experimentação com a configuração do systemd, descobri a solução que funciona:

sudo systemctl edit monit

Em seguida, preencha a seguinte configuração:

[Service]
PIDFile=/var/run/monit.pid
Restart=always
RemainAfterExit=no

E recarregue o daemon:

sudo systemctl daemon-reload
sudo systemctl restart monit

Agora o systemd reinicia meu serviço de monitoramento quando eu o mato:

ps aux | grep monit
root      7822  0.0  0.2 112476  2872 ?        Sl   19:09   0:00 /usr/bin/monit -c /etc/monit/monitrc
lookpla+  7855  0.0  0.0  14212  1008 pts/0    S+   19:12   0:00 grep --color=auto monit

sudo kill 7822
root      7872  0.0  0.2 112476  2964 ?        Sl   19:13   0:00 /usr/bin/monit -c /etc/monit/monitrc
lookpla+  7875  0.0  0.0  14212   984 pts/0    S+   19:13   0:00 grep --color=auto monit
    
por Hirurg103 06.09.2017 / 21:14