나는 /etc/init.d/mydaemon
쓰고 있어요 :데몬의 모든 서브 프로세스를 죽일
# ...
source functions # LSB compliant
EXEC=/usr/local/bin/mydaemon
PROG=mydaemon
function start() {
daemon --pidfile=/var/run/mydeamon.pid ${EXEC}
}
function stop() {
killproc ${PROG}
}
# ...
내 /usr/local/bin/mydaemon
: 때문에
#!/bin/bash
trap "trap TERM ; kill 0" TERM
binary with some args
AFAIK이 작동합니다 :
daemon
이mydaemon
기록 ' s PID in/var/run/mydaemon.pid
killproc
해당 PID를 읽고SIGTERM
을 해당 PID로 보냅니다.mydaemon
이 신호를 트랩하고 트랩을 사용 안 함으로 설정하고binary with some args
프로세스를 포함하여 을 전체PGRP
에 보냅니다.
그러나 이것은 작동하지 않습니다. 서비스를 중지 한 후 mydaemon
은 종료되지만 binary
은 계속 실행 중입니다.
내가 무엇을 놓치고, 데몬과 그 모든 아이들을 막는 가장 좋은 방법은 무엇입니까? 그것은 제대로 작동하지만이 나에게 덜 강력한 보인다
#!/bin/bash
binary with some args &
echo $! $$ > /var/run/mydaemon.pid
wait
및 시간 곳이 있습니다 BTW
: 내/usr/지방/빈/mydaemon는
입니다
때 이것은 적합하지 않습니다 (바이너리 호출이 간단하지 않은 경우 나 자신의 자식이있는 경우 등).