Defina RemainAfterExit=no para um script de inicialização clássico no systemd

Defina RemainAfterExit=no para um script de inicialização clássico no systemd

Eu executo um serviço personalizado com um script de inicialização clássico no Debian Jessie. Debian Jessie usa systemd. A razão pela qual uso um script de inicialização é que também uso o mesmo serviço no Debian Wheezy, que não possui systemd.

Como o serviço pode travar ocasionalmente, quero que ele seja reiniciado quando parar. Meu entendimento é que o systemd cuidará disso. No entanto, quando eu encerrar manualmente o serviço (sem systemctl stop service), systemctl statusreportarei o serviço como active (exited).

Entendo que isso significa que o systemd simplesmente considera o serviço como aquele que pode estar "em execução" sem ter um processo.A documentação menciona RemainAfterExitcomo forma de configurar este comportamento, mas este é um sinalizador para uso em um arquivo de unidade, só tenho um script de inicialização.

Existe uma maneira de informar ao systemd que um serviço init precisa de um processo para ser considerado ativo? Em outras palavras, deixe-o saber que active (exited)é um estado indesejado?

Responder1

Resolvi o problema escrevendo um arquivo de unidade systemd padrão genérico. Armazene o arquivo em /etc/systemd/system/$SERVICE.service.

Substitua $SERVICEpelo nome do serviço.

[Unit]
Description=$SERVICE init script wrapper
After=network.target

[Service]
ExecStart=/etc/init.d/$SERVICE start
ExecStop=/etc/init.d/$SERVICE stop
ExecReload=/etc/init.d/$SERVICE reload
PIDFile=/var/run/$SERVICE.pid
RemainAfterExit=no
Restart=always
Type=forking

[Install]
WantedBy=multiuser.target

Execute systemctl daemon-reloadpara atualizar os componentes internos do systemd.

informação relacionada