0

このトピックに関する多数のスレッドを読み、遭遇したほぼすべてのものを試しました: > /dev/null、qx、system、exec、fork、cmd with | (これは win32 で動作しましたが、現在は prefork MPM を使用する CentOS に移植しています)、echo | 現在、Proc::Daemon を使用していますが、Apache2::Subprocess は試していません。これは、親に結び付けられたスレッドであり、まさに私が望まないものであるように思われるからです。

私の状況は違うのかもしれません。長時間実行されるデータベースの復元プロセスの最後に、スクリプトが実行されているサービスそのものを再起動したいと考えています。httpdそのような設計の知恵の問題はさておき、どうすればこれを行うことができますか? 私が試したすべての方法は、sudo service httpd stop半分を実行するとすぐにスクリプトを停止するsudo service httpd restartため、それ自体が再び開始されることはありません。

これに対する 1 つの例外は、echo | です。今のところ、これは有望に思えましたが、コマンド ラインで実行して mod_perl スクリプトで実行したときに機能するものをコピーすると、次のように成功したように聞こえる行が表示されjob 1 at 2013-10-31 19:20ますが、その後は何も起こりません。を含むシェル メール、および/またはnow -mを含むエラー メッセージはありません。通常は任意のモジュールでそれを行う自分のモジュールからの電子メールはありません。成功のラインにもかかわらず、ただの静かな失敗。2>&1> /path/with/all/777/permsdie

それが役立つ場合、service httpd stop実行されるものは次のとおりです。

stop() {
        echo -n $"Stopping $prog: "
        kill -TERM `cat ${pidfile}`
        RETVAL=$?
        if [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
        then success
        else failure
        fi
        echo
}

これは以前は非常に単純に思えましたが、提案された解決策はたくさんありますが、どれもそれを行うようには見えません。他に確認または試行することはありますか?

4

1 に答える 1