我正在尝试从用C编写的CGI脚本中重新启动Boa Web服务器。这是在ucLinux系统上。对系统的调用(“/ etc / init.d / boa.sh restart”)成功运行,我从日志中看到Boa已停止,但它从未启动过。从CLI运行boa.sh restart确实可以正常工作。 boa.sh脚本如下所示。关于它为什么没有完全重启的任何想法?请注意,CGI脚本本身在Boa中运行。
NAME=boa
PROG=/bin/boa
OPTIONS="-c /etc/"
LOCKFILE=/var/lock/boa
STDLOGFILE=/var/log/boaerrlog.log
case "$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
答案 0 :(得分:1)
聊天中收集的信息。
通过CGI中的系统调用重新启动的进程实际上由同一进程提供服务。这不起作用,因为术语信号可能会杀死树中的所有进程,包括重新启动的boa进程。
另一种方法是让第二个运行boa的实例可以重启生产实例。生产实例可以重新启动用于重新启动生产实例的第二个实例。