更新:回复评论:
检查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
Run Code Online (Sandbox Code Playgroud)
检查 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
Run Code Online (Sandbox Code Playgroud)
原文:我已经停止了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
Run Code Online (Sandbox Code Playgroud)
谢谢!
Mar*_*ppi 28
当 Apache 拒绝正常停止或有Zombie Processes时,这种情况偶尔会发生。对于前者,您可以使用sudo killall -9 apache2;杀死所有正在运行的进程。但是,对于后者,您只需等待它们消失即可。如果 Apache 不想很好地停止,您真正想做的是调查正在发生的事情。不过,要弄清楚到底发生了什么可能很困难。
strace进程 id的交互可以提供有关哪些站点正在运行并导致问题的线索。从上面ps -A你可以检查第一个过程
strace -p 1663
Run Code Online (Sandbox Code Playgroud)
这将附加到正在运行的进程堆栈跟踪,提供正在发生的事情的实时输出。您可以随时Ctrl+C
一个额外的资源是 Apache 的主要错误日志,可以在/var/log/apache2/error.log你想要得到一个不错的日志块并浏览它以获取详细信息。如果问题是持续运行的问题
tail -f /var/log/apache2/error.log
Run Code Online (Sandbox Code Playgroud)
这类似于strace将实时运行。在过去的N行替换-f与-#其中#像50,100,282等的正数
小智 7
确保您有适当的权限来停止服务。
如果你运行:
service apache2 stop
Run Code Online (Sandbox Code Playgroud)
你不会得到任何错误只是:
* 停止 web 服务器 apache2
尝试:
sudo service apache2 stop
Run Code Online (Sandbox Code Playgroud)
小智 0
可以要求进程(通过向它们发送信号)停止。该kill命令是执行此操作的一种方法。如果您知道进程的进程 ID (PID),可以通过在终端中运行以下命令来很好地查询:
kill PID_OF_YOUR_PROCESS
Run Code Online (Sandbox Code Playgroud)
上面的示例向 PID 发送默认的 TERM 信号(代码 15)。您可以在kill ( )的手册页中查找信号代码man kill。
当程序忽略发送给它们的 TERM 信号时,仍然可以通过发送 KILL 信号(代码 9)来施加更大的压力。该信号被用作最后的手段,因为该进程可能不会保存任何未保存的数据。
-SIGNAL_CODE在进程 ID 之前指定 a作为第一个参数将向进程发送特定信号。该kill命令的另一个有用的功能是您可以指定更多 PID,如下例所示:
kill -9 PID1 PID2 PID3 PID4
Run Code Online (Sandbox Code Playgroud)
尝试使用该kill -9行终止 Apache 进程。他们应该停止,除非有什么阻碍他们这样做。
| 归档时间: |
|
| 查看次数: |
87983 次 |
| 最近记录: |