我回应我的错误......
Dentro del Directorio init.d se encuentra el fichero con el servicio que queremos modificar, por ejemplo el servicio emqx。 Tendremos algo como esto:
do_start()
{
start-stop-daemon --start \
--name emqx \
--user emqx \
--exec /usr/local/bin/checkconditionandrun.sh emqx -- start \
|| return 2
}
case "$1" in
start)
log_daemon_msg "Starting emqx"
do_start
case "$?" in
0|1) log_end_msg 0 ;;
2) log_end_msg 1
exit 1
;;
esac
;;
stop)
log_daemon_msg "Stopping emqx"
do_stop
case "$?" in
0|1) log_end_msg 0 ;;
2) log_end_msg 1
exit 1
;;
esac
;;
La clave de todo esto está en dos cosas:
1.- En la función do_start() el comando start-stop-daemon --start no debe de llamar directamente al comando "emqx start" lo que se hace es llamar a un script para verifique lo que necesitamos verificar ya continuación ese script ejecutará o no el comando pasado como parametro。
2.- Ahora si queremos que nuestro servicio se reinicie automáticamente si ha fallado , tal como se haría mediante un .service con las entradas Restart=always y RestartSec=10, debemos saber lo siguiente:
a) systemd es 兼容的 con los 脚本 heredados /etc/init.d de esta manera, cuando systemd carga definiciones de servicio, systemd-sysv-generator autogenera archivos .service sobre la marcha a partir de los scripts en /etc/ init.d.
b) Podemos agregar configuración a un servicio autogenerado agregando archivos "drop-in" llamados "restart.conf" a una Caribbean con el siguiente nombre: /etc/systemd/system/nombreservicio.service.d/
Teniendo en cuenta lo anterior y suponiendo que nuestro servicio se llame "emqx", podemos crear un fichero en la siguiente Caribbean:
/etc/systemd/system/emqx.service.d/restart.conf
con el siguiente contenido:
[Service]
Restart=always
RestartSec=10
De esta manera conseguimos que un servicio contenido en init.d podamos controlar tanto su arranque como suterior reintento de re-arranque por parte del propio systemd。
相关信息:
https://singlebrook.com/2017/10/23/auto-restart-crashed-service-systemd/
https://www.freedesktop.org/software/systemd/man/systemd.service.html
https://www.digitalocean.com/community/tutorial_series/how-to-configure-a-linux-service-to-start-automatically-after-a-crash-or-reboot