En el sistema openwrt, el proceso init se reemplaza por procd. Como proceso primario, procd puede monitorear el estado del proceso secundario. Una vez que se cierra el proceso secundario, puede intentar reiniciar el proceso en un momento determinado. Hay uhttpd, netifd, etc. que son monitoreados por procd en el sistema operativo. Hay un indicador USE_PROCD = 1 en la carpeta /etc/init.d/, a continuación se describe cómo permitir que procd inicie una determinada aplicación. El nombre de mi aplicación es binloader y el código del script se agrega directamente.
#! / bin / sh /etc/rc.common # Copyright (C) 2008 OpenWrt.org START = 98 #Secuencia de ejecución, la clasificación según el orden de las cadenas no es una clasificación numérica USE_PROCD = 1 #Utilice procd para iniciar BINLOADER_BIN = "/ usr / bin / binloader " start_service () { procd_open_instance #Crear una instancia, una aplicación puede ver varias instancias en procd #ubus call service list Puede ver la instancia procd_set_param respawn #Definir los parámetros de reaparición, decirle a procd que intente cuando el programa binloader salga reinicio de comandos procd_set_param "$ BINLOADER_BIN" comando de ejecución # binloader es "/ usr / bin / binloader" , si no se siguen más tarde por los parámetros pueden ser directamente procd_close_instance # instancia cerrado } función #start_service debe redefinirse stop_service () { RM - f /var/run/binloader.pid } #stop_service Redefinir, qué hacer después de salir del servidor restart () { stop start }
Debe señalarse que el programa ejecutado por procd no puede ser un demonio demonio, porque después de que el proceso principal del demonio sale, parece indicar que el programa salió, luego ingresará al proceso de reaparición, y luego comenzará y saldrá repetidamente.
Finalmente falló
procd: Instance binloader :: instancia1 s en un bucle de bloqueo 6 bloqueos, 0 segundos desde el último bloqueo
————————————————
Enlace original: https://blog.csdn.net/liangdsing/java/article/details/53906445