Apacheプロセスを停止できません


16

更新:コメントへの応答:

Apacheのプロセスを確認します。

$ ps a | grep apache 3
grep: 3: No such file or directory
$ ps a | grep apache
 4514 pts/0    S+     0:00 grep --color=auto apache
$ ps a | grep apache2
 4516 pts/0    S+     0:00 grep --color=auto apache2

Apacheエラーログを確認する

$ tail /var/log/apache2/error.log
[Sun Aug 07 03:14:19 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 03:13:58 2011] [notice] Graceful restart requested, doing restart
[Mon Aug 08 03:14:00 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 09:03:16 2011] [notice] caught SIGTERM, shutting down
[Mon Aug 08 09:05:47 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations

オリジナル: Apacheを停止しましたが、同じ数のプロセスがまだ実行されているのはなぜですか?

$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2
$ /etc/init.d/apache2 stop
 * Stopping web server apache2                            [ OK ] 
$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2

ありがとう!


(申し訳ありませんが、担当者が足りないのでコメントできません。) 1 . WebブラウザでWebサービスを利用できますか?2.プロセスのステータスを確認します。それらは「ゾンビプロセス」になっている可能性があります。grep apache 3.エラーログを確認します。役に立つかもしれませんtail /var/log/apache/error.log
SamK

1. firefoxを使用しています。私のラップトップです。2と3は私の更新を見る。
すべてのStackExchange

この「apache2 -k stop」または「apache2 -k restart」を試しましたか?またはシステムの再起動?
blade19899

回答:


27

これは、Apacheがうまく停止するのを拒否した場合、またはZombie Processesがある場合に時々発生する可能性があります。前者については、実行中のすべてのプロセスをsudo killall -9 apache2;で強制終了できます。ただし、後者の場合、単純にそれらが消えるのを待つ必要があります。Apacheがうまく停止したくない場合は、何をしているのかを調査することが本当にしたいでしょう。しかし、何が起こっているのかを正確に知ることは難しい場合があります。

straceプロセスID のインタラクティブな情報は、どのサイトが機能して問題を引き起こしているかについての手がかりを与える可能性があります。上記からps -A、最初のプロセスを確認できます

strace -p 1663

これは、実行中のプロセスのスタックトレースに添付され、何が行われているかのライブ出力を提供します。いつでもCtrl+C

追加のリソースは、Apacheのメインエラーログです。これ/var/log/apache2/error.logは、ログの適切なチャンクを取得して、詳細を確認することをお勧めします。問題が進行中の問題である場合

tail -f /var/log/apache2/error.log

これstraceは、リアルタイムで実行されるものと同様です。最後のN行については、が50、100、282などの正数-fである-#場所に置き換えます#


7

サービスを停止するための適切な権限があることを確認してください。

実行する場合:

service apache2 stop

エラーは発生しません。

* Webサーバーapache2の停止

試してください:

sudo service apache2 stop      

十分なメモリまたはスワップほぼ満杯がない場合、これは失敗します、killallをで唯一のソリューションです
ジェームズ・タン

3

私も同じ問題を抱えていて、次のことを試しました:

sudo apache2ctl stop

サービスを停止する

sudo apache2ctl start

もう一度起動します。

それは私のために働く、可能な提案は大歓迎です。



0

プロセスに停止を要求することができます(シグナルを送信することにより)。killコマンドは、それを行うための方法です。プロセスのプロセスID(PID)がわかっている場合は、ターミナルで次のコマンドを実行することで適切に尋ねられます。

kill PID_OF_YOUR_PROCESS

上記の例は、PIDにデフォルトのTERMシグナル(コード15)を送信します。killman kill)のマニュアルページでシグナルコードを調べることができます。

プログラムが送信されたTERMシグナルを無視しても、KILLシグナル(コード9)を送信することにより、もう少し圧力をかけることができます。プロセスは未保存のデータを保存しない可能性があるため、このシグナルは最後の手段として使用されます。

-SIGNAL_CODEプロセスIDの前に最初のパラメーターとしてa を指定すると、プロセスに特定のシグナルが送信されます。このkillコマンドのもう1つの便利な機能は、次の例のように、より多くのPIDを指定できることです。

kill -9 PID1 PID2 PID3 PID4

kill -9行を使用して、Apacheプロセスを終了してみてください。何らかの理由でブロックされない限り、停止する必要があります。


読者が「kill」コマンドに慣れていない場合、apache2プロセスのPIDを見つける方法を知る機会はほとんどありません。
マックスバラクラ

0

私は同じ問題を抱えていましたが、1つのservice apache2 stopコマンドを実行することはできません-1つのPERプロセスを実行する必要があります。次に、sudoそれを必要とする奇妙なアカウントにログインしている場合に備えて、前にaを追加したい場合があります。sudo service apache2 stop

私にとっては素晴らしい仕事でした。


-2

nginxをインストールした後、apacheは正常に動作しなくなりました。場合によっては、apginはnginxと混同するようです。nginxを削除するだけ

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