![무한 루프가 있는 프로세스의 시작-중지-데몬 블록](https://linux55.com/image/83750/%EB%AC%B4%ED%95%9C%20%EB%A3%A8%ED%94%84%EA%B0%80%20%EC%9E%88%EB%8A%94%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%8B%9C%EC%9E%91-%EC%A4%91%EC%A7%80-%EB%8D%B0%EB%AA%AC%20%EB%B8%94%EB%A1%9D.png)
내 임무는 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
즐기다