start-stop-daemon bloqueia o processo com loop infinito

1

Eu tenho uma tarefa para projetar um serviço a partir de um script bash, a fim de ser chamado na forma como o serviço ... iniciar / parar / reiniciar.

O script que se tornará um serviço é um loop while infinito que acorda a cada minuto e faz alguma verificação. 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 (eu também tentei copiar para o init.d e rodar com o início da detecção de serviço)

O script de inicialização simplesmente não sai do loop e permanece bloqueado na função start-stop-daemon. Quando eu comento infinito while loop 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 um serviço e por que meu arquivo pid não é criado.

    
por Nexy_sm 18.02.2016 / 09:50

1 resposta

0

Para começar,

use o switch --background para que seja bifurcado.   use o switch -m para criar um arquivo PID

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

Para uma resposta copmpleta, consulte link

Aproveite

    
por 18.02.2016 / 10:10