
アップデート:コメントへの返信:
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
これは、Apacheが適切に停止することを拒否したり、ゾンビプロセス前者の場合は、 で実行中のすべてのプロセスを強制終了できます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 行を-f
に置き換えます。-#
ここでは#
50、100、282 などの正の数値です。
答え2
サービスを停止するための適切な権限があることを確認してください。
実行する場合:
service apache2 stop
次の場合、エラーは発生しません:
* Webサーバーapache2を停止しています
試す:
sudo service apache2 stop
答え3
私も同じ問題を抱えていたので、次のことを試しました。
sudo apache2ctl stop
サービスを停止し、
sudo apache2ctl start
もう一度やり直します。
私にとってはうまくいきました。何か提案があれば歓迎します。
答え4
プロセスは(信号プロセスを停止するには、プロセスに割り当てられた ID 番号 (プロセス ID に割り当てられた ID 番号) を要求します。 このkill
コマンドは、その方法の 1 つです。プロセスのプロセス ID (PID) がわかっている場合は、ターミナルで以下のコマンドを実行することで、プロセス ID を問い合わせることができます。
kill PID_OF_YOUR_PROCESS
上記の例では、PIDにデフォルトのTERM信号(コード15)を送信します。信号コードは、kill のマニュアルページ(man kill
)。
プログラムが送信された TERM シグナルを無視する場合でも、KILL シグナル (コード 9) を送信することで、もう少し圧力をかけることが可能です。このシグナルは、プロセスが未保存のデータを一切保存しない可能性があるため、最後の手段として使用されます。
プロセス ID の前の最初のパラメータとしてa を指定する-SIGNAL_CODE
と、プロセスに特定のシグナルが送信されます。このkill
コマンドのもう 1 つの便利な機能は、次の例のように、より多くの PID を指定できることです。
kill -9 PID1 PID2 PID3 PID4
行を使用して Apache プロセスを終了してみてくださいkill -9
。何かがブロックしない限り、プロセスは停止するはずです。