新贵不能确定我的过程'PID

我正在为我的同事写的一个servlets写一个新贵的脚本。 我的新贵工作可以启动服务,但是当它只输出queryqueue start/running ; 注意到其他服务没有提供pid。

 #/etc/init/queryqueue.conf description "Query Queue Daemon" author "---" start on started mysql stop on stopping mysql expect fork env DEFAULTFILE=/etc/default/queryqueue umask 007 kill timeout 30 pre-start script #if [ -f "$DEFAULTFILE" ]; then # . "$DEFAULTFILE" #fi [ ! -f /var/run/queryqueue.sock ] || rm -rf /var/run/queryqueue.sock #exec /usr/local/sbin/queryqueue -s /var/run/queryqueue.sock -d -l /tmp/upstart.log -p $PIDFILE -n $NUM_WORKERS $CLEANCACHE $FLUSHCACHE $CACHECONN end script script #Originally this stanza didn't exist at all if [ -f "$DEFAULTFILE" ]; then . "$DEFAULTFILE" fi exec /usr/local/sbin/queryqueue -s /var/run/queryqueue.sock -d -l /tmp/upstart.log -p $PIDFILE -n $NUM_WORKERS $CLEANCACHE $FLUSHCACHE $CACHECONN end script post-start script for i in `seq 1 5` ; do [ -S /var/run/queryqueue.sock ] && exit 0 sleep 1 done exit 1 end script 

有问题的服务是一个python脚本,运行时没有错误,在检查命令行选项和基本的环境清洁度之后,使用下面的代码分叉,所以我告诉大家expect fork

 pid = os.fork() if pid != 0: sys.exit(0) 

该脚本是可执行的,并有一个python shebang。 我可以将TERM信号手动发送到进程,并优雅地退出。 但运行stop queryqueue声称queryqueue stop/waiting但进程仍然活着,以及。 此外,它的日志表明它从来没有收到杀死信号。 我猜这是因为暴发户不知道它有哪个pid。 我也尝试过expect daemon并把期望条款完全抛出,但行为没有改变。

我怎么能得到暴发户来确定exec'd过程的pid

expect节只适用于“主”过程(“ exec ”或“ script ”节)。 这在init(5)中有logging。