web-dev-qa-db-ja.com

rootユーザーとApacheユーザーの両方として実行されているCentOShttpd

CentOSサーバーでApachehttpdサーバーを実行していますが、ルートとしてhttpdプロセスを実行し、Apacheユーザーとして1つ実行しているようです。

トップのこのスクリーンショットを参照してください:

enter image description here

ユーザーとグループは構成ファイルでApacheに設定されているので、ここで少し迷っています。

「ルート」プロセスを開始するものと、それが実行されている理由を知っている人はいますか?

2
Jacob Pedersen

「Apache」として実行されているのはワーカープロセスです。 「root」として実行されているのはマスタープロセスです。これは完全に正常です。

マスタープロセスは、必要に応じて(構成ファイルで指定されている制約を使用して)ワーカーを生成し、着信トラフィックを処理します。通常、下位ポート80および443にバインドするには、rootである必要があります。バインド後、Apacheユーザーに特権をドロップします。

労働者は時々刈り取られます。長時間実行されるプロセスは、rootとして実行されるプロセスです。 httpd.confを見ると、次のようなブロックが表示されます。

StartServers       1
MinSpareServers    1
MaxSpareServers    5
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000

したがって、この例では、マスタープロセスは起動時に1人のワーカーを生成します。より多くのトラフィックがある場合、それはより多くの労働者を生み出します。ワーカーが4000のリクエストを処理すると、ワーカーは停止し、トラフィックに応じて、マスタープロセスが新しいワーカープロセスを生成する場合があります。

8
cjc

理由や方法はわかりませんが、ルートプロセスが親プロセスであり、Apacheが所有するプロセスが子プロセスであるように見えます。

pstree -Acp | grep httpdを実行し、それをps aux | grep httpdと比較しました

0
Safado