サービスの停止後、Apache サーバーが自動的に起動します。

サービスの停止後、Apache サーバーが自動的に起動します。

httpdが停止した後に自動的に起動する原因は何ですか?

Bashスクリプトでは、まずApache Webサーバーを停止する必要があります。スクリプトは次のとおりです。

apachectl stop;
while pgrep httpd; do sleep 1; done
echo "[Apache server stopped]"

スクリプトを実行すると、実行中のプロセスがないまで実行中のApacheプロセスを印刷して印刷します。[Apacheサーバーが停止しました。]

その後、コマンドを実行するとpgrep httpd何も印刷されませんが、サーバーでホストされているWebサイトに入ると、pgrep httpdいくつかのhttpdプロセスが印刷されます。

これがApacheを停止する正しい方法ですか?実行後に自動的に起動するのはなぜですかapachectl stop?もし関連があれば活動的な時間を維持する、実行中のサブプロセスを強制的に停止する方法は?

編集:これは、コマンドラインからコマンドを実行してもservice httpd stop同様です。apachectl stop

答え1

upstart、サービス管理者は、次のように設定されている場合はhttpdを再起動できます。respawn

apachectl stop通知なしでプロセスを停止するupstart

努力する:

service httpd stop

ところでstop、Apacheで同様のコマンドを実行すると、新しい接続の受け入れが停止します。gracefulsまた、現在開いている接続を完了することもできます。

答え2

サービス確認

httpdCentOS 6では、サービスにアクセスできるかどうかを調べます。

$ service --status-all |& grep httpd
httpd is stopped

以下を使用してこのサービスを無効にできますchkconfig

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:on    4:on    5:on    6:off

$ sudo chkconfig httpd off

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

ところで、アクセスすると引き続き始まりますか?

CentOS 6を使用しているので、おそらくUpstartを使用します。httpdサービスが管理されていることを確認できます。

$ initctl list

リストに表示されますが、表示する構成はありません。問題の説明によれば、システムはhttpd次のように設定されていると仮定します。

httpd stop/waiting

私が理解しているように、これはUpstartがサービスにアクセスしていることを確認すると、そのサービスを再起動することを意味します。このhttpd場合、/etc/initUpstartはサービススクリプトを維持します。ファイルに移動してサービスを無効にし、構成を再ロードする必要があります。respawn次の原因が考えられます。

はい

$ more /etc/init/prefdm.conf 
# prefdm - preferred display manager
#
# Starts gdm/xdm/etc by preference

start on stopped rc RUNLEVEL=5

stop on starting rc RUNLEVEL=[!5]

console output
respawn
respawn limit 10 120
exec /etc/X11/prefdm -nodaemon

引用する

答え3

で見つけてください/etc/inittab。誰かがそれを再び生かしたかもしれません。

関連情報