从 CGI 调用重新启动脚本未完全重新启动

标签 c bash shell cgi uclinux

我正在尝试从用 C 编写的 CGI 脚本内部重新启动 Boa Web 服务器。这是在 ucLinux 系统上。对 system("/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

最佳答案

在聊天中收集的信息。

通过CGI中的系统调用重新启动的进程实际上是由同一个进程提供服务的。这不起作用,因为术语信号可能会杀死树中的所有进程,包括重新启动的 boa 进程。

另一种方法是运行第二个 boa 实例来重新启动生产实例。而生产实例可以重新启动第二个实例,用于重新启动生产实例。

关于从 CGI 调用重新启动脚本未完全重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12341249/

相关文章:

结合VB和C/C++编程?

c - 位选择算法

linux - 递归重命名所有子目录中的 .jpg 文件

php - 如何使用 bash 脚本在 MySQL 中赋值

linux - Bash - 在没有文件的情况下使用 AT 命令

linux - shell脚本: when to test on the last command?

集体或个人循环以获得最佳性能?

c - 如何检查用户输入的所有大写字母是否都存在?

linux - Grep 源代码(不包括构建文件夹)

c - 加载 shell 脚本的函数而不执行它