我试图从用C编写的CGI脚本中重新启动Boa Web服务器。这是在ucLinux系统上。对system(“ / etc / init.d / boa.sh restart”)的调用成功运行,并且从日志中我看到Boa已停止,但从未启动。从CLI运行boa.sh重新启动确实可以正常工作。 boa.sh脚本如下所示。关于为什么它没有完全重新启动的任何想法?请注意,CGI脚本本身在Boa中运行。NAME=boaPROG=/bin/boaOPTIONS="-c /etc/"LOCKFILE=/var/lock/boaSTDLOGFILE=/var/log/boaerrlog.logcase "$1" in start) echo -n $"Starting $NAME: " boa $OPTIONS > /dev/null 2>&1 &# boa $OPTIONS >$STDOUTFILE 2>&1 & touch $LOCKFILE echo "OK" ;; stop) echo -n $"Stopping $NAME: " kill -TERM `pidof $NAME` > /dev/null 2>&1 rm -f $LOCKFILE $PIDFILE > /dev/null 2>&1 echo "OK" ;; restart) $0 stop $0 start ;; status) echo "running" ;;esac
最佳答案
聊天中收集的信息。
通过CGI中的系统调用重新启动的进程实际上是由同一进程提供服务的。这不起作用,因为信号一词很可能会杀死树中的所有进程,包括重启的蟒蛇进程。
另一种选择是运行第二个蟒蛇实例,该实例可以重新启动生产实例。生产实例可以重新启动时,第二个实例用于重新启动生产实例。