如果你想知道一个进程在Linux操作系统中运行多长时间,请采用本文介绍的四种方法:使用ps命令etime/etimes选项、使用进程名称及proc文件系统(procfs)。可以在ps命令的帮助下完成,它显示了给定的过程正常运行时间,形式为[[DD-]hh:]mm:ss,以秒为单位,以及确切的开始日期和时间。ps命令中有多个选项可用于检查,每个选项都有不同的输出,可用于不同的目的。

关于top命令的说明

# top -b -s -n 1 | grep httpd

sysbench查询Lua脚本的位置_proc文件系统

请注意:你可能认为在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

sysbench查询Lua脚本的位置_bc_02

方法三:使用etimes选项

以下命令将显示经过的时间(以秒为单位):

# ps -p 16337 -o etimes

ELAPSED

1170810

它以秒为单位显示输出,你需要根据你的要求进行转换:

sysbench查询Lua脚本的位置_proc文件系统_03

# bc -l

1170810/3600

325.22500000000000000000

如果你想知道该进程运行了多少天,请使用以下格式:

# bc -l

1170810/86400

13.55104166666666666666

上述命令不会显示进程的确切开始日期,如果你想了解这些信息,则可以使用以下命令,根据以下输出,httpd进程自8月05日以来一直在运行:

# ps -ef | grep httpd

sysbench查询Lua脚本的位置_bc_04

方法四:使用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”文件,但包含运行时系统信息(例如系统内存、安装的设备、硬件配置等)。