blocos start-stop-daemon para processo com loop infinito

blocos start-stop-daemon para processo com loop infinito

Tenho a tarefa de projetar um serviço a partir de um script bash para ser chamado da maneira service ... iniciar/parar/reiniciar.

O script que se tornará um serviço é um loop while infinito que é ativado a cada minuto e faz algumas verificações. Eu chamo assim:

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 e daemon são definidos assim:

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

Quando eu corro

./detection start (também tentei copiar para init.d e executar com início de detecção de serviço)

O script init simplesmente não sai do loop e permanece bloqueado na função start-stop-daemon. Quando comento o loop while infinito dentro do meu jblub_control_loop.sh ele passa, mas nenhum arquivo pid é criado.

Minha pergunta é como iniciar corretamente o script com um loop infinito como serviço e por que meu arquivo pid não foi criado.

Responder1

Para começar,

use a opção --background para que seja bifurcada. use a opção -m para criar um arquivo PID

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

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

Aproveitar

informação relacionada