Establezca RemainAfterExit=no para un script de inicio clásico en systemd

Establezca RemainAfterExit=no para un script de inicio clásico en systemd

Ejecuto un servicio personalizado con un script de inicio clásico en Debian Jessie. Debian Jessie usa systemd. La razón por la que uso un script de inicio es que también uso el mismo servicio en Debian Wheezy, que no tiene systemd.

Dado que el servicio puede fallar ocasionalmente, quiero que se reinicie cuando se detenga. Tengo entendido que systemd se encargará de esto. Sin embargo, cuando elimino manualmente el servicio (sin systemctl stop service), systemctl statusinformaré que el servicio es active (exited).

Tengo entendido que esto significa que systemd simplemente considera que el servicio puede "ejecutarse" sin tener un proceso.La documentación menciona RemainAfterExitcomo una forma de configurar este comportamiento., pero esta es una bandera para usar en un archivo de unidad, solo tengo un script de inicio.

¿Hay alguna manera de hacerle saber a systemd que un servicio de inicio necesita un proceso para considerarse activo? En otras palabras, ¿hacerle saber que active (exited)se trata de un estado no deseado?

Respuesta1

Resolví el problema escribiendo un archivo de unidad systemd repetitivo genérico. Guarde el archivo en /etc/systemd/system/$SERVICE.service.

Reemplace $SERVICEcon el nombre del servicio.

[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

Ejecute systemctl daemon-reloadpara actualizar las partes internas de systemd.

información relacionada