supervise / daemontoolsはapacheと競合します-D FOREGROUND


1

誰かがこの行動を理解するのを手伝ってくれることを望んでいます。

/ etc / service /の下にたくさんのdaemontoolsサービスがあります。サービスの1つはApacheを制御し、実行スクリプトにはこれが含まれています。

exec envdir /var/lib/supervise/wwwproxy/env setuidgid root bash <<-BASH
    ulimit -n 8192  # also increase the running user's file descriptor limit
    exec apache2 -f /path/to/demo_apache2.conf -D FOREGROUND
BASH 

svc -d /etc/service/*実際にすべてのサービスを再起動するという問題が発生していましたが、それらは停止しませんでした。我々は最終的に1つのサービスにそれを突き止め、それが見つかっsvc -d /etc/service/apache2もたらすまで、他のサービスには自身も含め、ダウンしていました。

FOREGROUNDをNO_DAEMONIZEに変更すると動作は修正されますが、何が起こっているのかを理解したいと思っています。誰かsvc -d1つのサービスが他のサービスを立ち上げる理由を説明できますか?

あなたが提供できる手がかりをありがとう。


1
なぜinitdスクリプトを使用しないのですか?
ジャミエブ

1
--- Apacheに使用している実行スクリプトを投稿できますか?--- <-Nevermind、私は盲目です:-)また、superviseApacheを制御するために使用しているすべての神聖ではない理由で、その理由を教えてください?(Apacheは独自のプロセス管理を行っており、良い仕事をしています。
デーモンツール

回答:


2

私はのために-D NO_DAEMONIZE動作しませんでした、私が使用する必要がありました-D NO_DETACH。(CentOS 6.3、Apache / 2.2.15)

http://httpd.apache.org/docs/2.2/programs/httpd.htmlも参照してください

また、-DNO_DETACH(親の分岐を防ぐ)や-DFOREGROUND(親のsetsid()などの呼び出しを防ぐ)など、あまり一般的ではない特定の起動パラメーターの設定にも使用できます。


1

私の提案は、デーモンツールを使用してApacheを実行ないことですが、その代わりに、実行スクリプトを単純化する必要があります。

最小限の最小値から始めます。

#!/bin/bash
exec apache2 -f /path/to/httpd.conf -D NO_DAEMONIZE

使用する必要がある場合envdirは、代わりにそれを使用してApacheを起動できますexec。コールはおそらく必要はありませんが、Apacheを起動する前に実行スクリプトのどこにでも追加することができます。
ulimit


再:あなたが見ている実際の奇妙な行動、そこにあるいくつかの機能との違い-DFOREGROUND-DNO_DAEMONIZE-後者は、私はいつもdaemontoolsの下のApacheを実行するための推奨見てきたものであるが(obligtoryが先行する「ことをしないでください」) -しかし、これらの違いがあなたが説明する動作を引き起こす理由はわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.