0

Cで記述されたCGIスクリプト内からBoaWebサーバーを再起動しようとしています。これはucLinuxシステム上にあります。system( "/etc/init.d/boa.sh restart")の呼び出しは正常に実行され、ログからBoaが停止していることがわかりますが、開始されていません。CLIからboa.shrestartを実行しても問題なく動作します。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

4

1 に答える 1

1

チャットで収集された情報。

CGIのシステムコールによって再起動されているプロセスは、実際には同じプロセスによって処理されています。シグナルという用語は、再起動されたboaプロセスを含む、ツリー内のすべてのプロセスを強制終了する可能性があるため、これは機能しません。

別の方法は、本番インスタンスを再起動できるboaの2番目のインスタンスを実行することです。本番インスタンスは、本番インスタンスの再起動に使用される2番目のインスタンスを再起動できます。

于 2012-09-10T15:09:51.553 に答える