무한 루프가 있는 프로세스의 시작-중지-데몬 블록

무한 루프가 있는 프로세스의 시작-중지-데몬 블록

내 임무는 bash 스크립트에서 서비스 시작/중지/다시 시작 방식으로 호출되는 서비스를 디자인하는 것입니다.

서비스가 될 스크립트는 매분 깨어나 몇 가지 검사를 수행하는 무한 while 루프입니다. 나는 그것을 이렇게 부른다:

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와 데몬은 다음과 같이 정의됩니다.

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

내가 달릴 때

./시작 감지(init.d에 복사하고 시작 감지 서비스를 사용하여 실행해 보기도 했습니다)

init 스크립트는 루프에서 전혀 벗어나지 않으며 start-stop-daemon 함수에서 차단된 상태로 유지됩니다. jblub_control_loop.sh에서 무한 while 루프를 주석 처리하면 통과하지만 pid 파일이 생성되지 않습니다.

내 질문은 무한 루프를 서비스로 사용하여 스크립트를 올바르게 시작하는 방법과 내 pid 파일이 생성되지 않는 이유입니다.

답변1

시작으로,

--Background 스위치를 사용하여 분기되도록 합니다. -m 스위치를 사용하여 PID 파일 만들기

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

전체 답변을 보려면 다음을 참조하세요.https://stackoverflow.com/questions/16139940/what-is-start-stop-daemon-in-linux-scripting

즐기다

관련 정보