bloques start-stop-daemon para procesos con bucle infinito

bloques start-stop-daemon para procesos con bucle infinito

Tengo la tarea de diseñar un servicio a partir de un script bash para poder llamarlo de la forma en que el servicio... inicia/detiene/reinicia.

El script que se convertirá en un servicio es un bucle while infinito que se activa cada minuto y realiza algunas comprobaciones. Yo lo llamo así:

start() {
echo -n $"Starting $DESC:"
DAEMON_ARGS=$(xmlstarlet sel -T -t -m "/config/input/sensor/device/resource" -v "concat(../../@type, ' ', ../../@dev, ' ', @res)" -n $CONFIGURATION_FILE | extract_devices)        # get device names out of XML file
echo "daemon args $DAEMON_ARGS"
start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS
echo}

pid y daemon se definen así:

PIDFILE="/var/run/detection.pid"
NAME="jblub_control_loop.sh"
DAEMON="/root/test_det/${NAME}"

cuando corro

./detection start (también intenté copiar en init.d y ejecutar con el inicio de detección del servicio)

El script de inicio simplemente no sale del bucle y permanece bloqueado en la función start-stop-daemon. Cuando comento el bucle while infinito dentro de mi jblub_control_loop.sh, pasa pero no se crea ningún archivo pid.

Mi pregunta es cómo iniciar correctamente el script con un bucle infinito como servicio y por qué no se crea mi archivo pid.

Respuesta1

Para comenzar,

use el modificador --background para que se bifurque. use el modificador -m para crear un archivo PID

start-stop-daemon --start --background -m --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS

Para obtener una respuesta completa, consultehttps://stackoverflow.com/questions/16139940/what-is-start-stop-daemon-in-linux-scripting

Disfrutar

información relacionada