如何查找 Apache2 的正常运行时间。有许多建议可以使用
httpd fullstatus
但这失败了
-bash: httpd: command not found
两者都没有运行 httpd 命令top
,只有一个 apache2 进程。
我也尝试过(但没有成功)
httpd status
apache2 status
apache2 fullstatus
/usr/sbin/apache2 fullstatus
/usr/sbin/apache2 status
考虑到 Apache 在不同平台上安装/配置方式的差异,我可以使用什么命令来可靠地查找 apache2 的正常运行时间?
答案1
ps -eo comm,etime
例如,您可以使用:
$ ps -eo comm,etime | grep httpd
httpd 5-01:40:22
这显示了自该过程启动以来经过的时间。我的显示时间为 5 天,1 小时,40 分钟,22 秒。
重启后:
$ ps -eo comm,etime | grep httpd
httpd 00:07
在优雅重启中,如果 Apache 进程仍在提供连接,则它在完成之前不会被终止,因此如果向较慢的主机下载大量文件,它可能会持续一段时间直至完成。
我确实截取了大部分输出,因为它显示了每个分叉进程,但您将对其运行时间有一个大致的了解。
答案2
我怀疑有很多特定于 apache 版本的方法可以做到这一点,但一种普遍有效的(略微蛮力的)方法如下。
找到打开端口的进程的 PID;它将是第一个启动的进程:
[root@lory ~]# netstat -apn|grep -w 80|grep LISTEN
tcp 0 0 :::80 :::* LISTEN 2903/httpd
该netstat
命令需要特权,因此请以 root 身份或在 下运行sudo
。在本例中,PID 为 2903。然后查找该进程运行了多长时间:
[root@lory ~]# ps auxww|grep 2903|grep -v grep
apache 2903 0.0 1.0 413316 39972 ? S Oct23 0:42 /usr/sbin/httpd
在这种情况下,开始时间是 10 月 23 日,所以我已经运行了几天。您可能会得到一个像 11:15 这样的字段,在这种情况下它是一天中的时间,今天,所以你知道重启成功了。
答案3
如果你有mod_status安装后,您应该能够使用以下命令确定正常运行时间:
apachectl status
这将显示当前时间以及上次重启时间。它可能特定于版本/dstro,但我的 debian 服务器也在输出中显示“服务器正常运行时间”