it-swarm-ja.com

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

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

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

Original: 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

ありがとう!

15
Tim

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

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

strace -p 1663

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

追加のリソースは、Apacheのメインエラーログです。これは/var/log/Apache2/error.logにあります。ログの適切な部分を取得して、詳細を確認してください。問題が実行中の継続的な問題である場合

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

これはstraceに似ており、リアルタイムで実行されます。最後のN行について、-f-#に置き換えます。ここで、#は50、100、282などの正の数です。

25
Marco Ceppi

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

実行する場合:

service Apache2 stop

エラーは発生しません。

* WebサーバーApache2の停止

試してください:

Sudo service Apache2 stop      
7
jeremyforan

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

Sudo Apache2ctl stop

サービスを停止する

Sudo Apache2ctl start

もう一度起動します。

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

2
Rudhin

コマンドsystemctl stop Apache2がうまくいきました。

1
IMTHATGUY P

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

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

0
Peter

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

kill PID_OF_YOUR_PROCESS

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

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

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

kill -9 PID1 PID2 PID3 PID4

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

0
Sean Kimball