查找 'apache2' 的正常运行时间

Jak*_*e N 4 ubuntu apache-2.2

我怎样才能找到 Apache2 的正常运行时间。有很多建议可以使用

httpd fullstatus
Run Code Online (Sandbox Code Playgroud)

但这失败了

-bash: httpd: command not found
Run Code Online (Sandbox Code Playgroud)

top两者都没有运行 httpd 命令,只有一个 apache2 进程。

我也试过(没有任何运气)

httpd status
apache2 status
apache2 fullstatus
/usr/sbin/apache2 fullstatus
/usr/sbin/apache2 status
Run Code Online (Sandbox Code Playgroud)

鉴于 Apache 在各种平台上的安装/配置方式不同,我可以使用什么命令来可靠地找到 apache2 的正常运行时间?

Reg*_*gan 18

ps -eo comm,etime例如,您可以使用:

$ ps -eo comm,etime | grep httpd
httpd            5-01:40:22
Run Code Online (Sandbox Code Playgroud)

这显示自进程开始以来经过的时间。我的显示 5 天 1 小时 40 分 22 秒。

并在重新启动后:

$ ps -eo comm,etime | grep httpd
httpd                 00:07
Run Code Online (Sandbox Code Playgroud)

在正常重启中,如果一个 apache 进程仍在为一个连接提供服务,它在完成之前不会被终止,所以如果它是对慢速主机的大量下载,它可能会停留一段时间直到它完成。

我确实剪掉了大部分输出,因为它显示了每个分叉的进程,但是您将大致了解它运行了多长时间。


Mad*_*ter 7

我怀疑有很多特定于 apache 版本的方法可以做到这一点,但一种普遍有效(并且稍微有点暴力)的方法如下。

找到打开端口的进程的PID;这将是第一个开始:

[root@lory ~]# netstat -apn|grep -w 80|grep LISTEN
tcp        0      0 :::80                       :::*                        LISTEN      2903/httpd          
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,开始时间是 10 月 23 日,所以我已经运行了几天。您可能会看到像 11:15 这样的字段,在这种情况下,这是一天中的某个时间,即今天,因此您知道重启成功了。


Mat*_*sen 6

如果您安装了mod_status,您应该能够通过以下方式确定正常运行时间:

apachectl status
Run Code Online (Sandbox Code Playgroud)

这将显示当前时间以及上次重启时间。它可能是版本/dstro 特定的,但我的 debian 服务器也在输出中显示“服务器正常运行时间”