如果你想知道一个进程在Linux操作系统中运行多长时间,请采用本文介绍的四种方法:使用ps命令etime/etimes选项、使用进程名称及proc文件系统(procfs)。可以在ps命令的帮助下完成,它显示了给定的过程正常运行时间,形式为[[DD-]hh:]mm:ss,以秒为单位,以及确切的开始日期和时间。ps命令中有多个选项可用于检查,每个选项都有不同的输出,可用于不同的目的。
关于top命令的说明
# top -b -s -n 1 | grep httpd
请注意:你可能认为在top命令输出中可以找到相同的详细信息,那就错了,它显示了任务自启动以来所使用的总CPU时间,但它不包括经过的时间,所以,不要混淆这个。
ps命令相关说明
ps代表进程状态,它显示有关系统上活动/正在运行的进程的信息。
它提供了当前进程的快照以及用户名、用户ID、CPU使用率、内存使用情况、进程开始日期和时间命令名等详细信息。
1、etime:自进程开始以来经过的时间,以[[DD-]hh:]mm:ss的形式出现。
2、etimes:自进程开始以来经过的时间,以秒为单位。
为此,你需要找出进程的PID,我们可以使用pidof命令轻松识别它:
# pidof httpd
30446 30445 30444 30443 30442 16337
方法一:使用etime选项
使用带有etime选项的ps命令可获取详细的已用时间:
# ps -p 16337 -o etime
ELAPSED
13-13:13:26
根据上面的输出,httpd进程已经在我们的服务器上运行了13天13小时13分钟和26秒。
方法二:使用进程名称,而不是进程ID(PID)
如果要使用进程名称而不是PID,请使用以下名称:
# ps -eo pid,etime,cmd | grep httpd | grep -v grep
方法三:使用etimes选项
以下命令将显示经过的时间(以秒为单位):
# ps -p 16337 -o etimes
ELAPSED
1170810
它以秒为单位显示输出,你需要根据你的要求进行转换:
# bc -l
1170810/3600
325.22500000000000000000
如果你想知道该进程运行了多少天,请使用以下格式:
# bc -l
1170810/86400
13.55104166666666666666
上述命令不会显示进程的确切开始日期,如果你想了解这些信息,则可以使用以下命令,根据以下输出,httpd进程自8月05日以来一直在运行:
# ps -ef | grep httpd
方法四:使用proc文件系统(procfs)
上面的命令不会显示进程的确切开始时间,并使用以下格式进行检查,根据以下输出,httpd进程自8月05日17:20开始运行:
# ls -ld /proc/16337
dr-xr-xr-x. 9 root root 0 Aug 5 17:20 /proc/16337/
proc文件系统(procfs)是类Unix操作系统中的特殊文件系统,它提供有关进程和其他系统信息的信息。它有时被称为进程信息伪文件系统,它不包含“real”文件,但包含运行时系统信息(例如系统内存、安装的设备、硬件配置等)。