Linux——获取服务器进程的启动时间和存活时间

前言

这篇文章主要讲获取Linux系统中获取进程启动时间和存活时间的方法,内容没有很多,直接上干货

有时候我们会希望查看Linux服务器上面某个进程的启动时间和存活时间,有些读者可能会想到通过top -p [pid]的方式来进行获取,但实际上top命令展示的TIME+字段表示的并不是进程存活的时间,而是这个进程累积使用的CPU时间,如果一个进程使用的cpu很少,那即使这个进程已经存在N长时间,TIME+ 的值也是很小的数值。也就是说,TIME+字段的值并不能直接反映出进程的存活时间。

image.png

对这种情况,我们可以使用ps命令来满足我们的需要,常用的ps -ef命令默认是按照UID PID PPID C STIME TTY TIME CMD来展示信息的,这几个字段对应的含义如下:

字段名 含义
UID 进程所有者的用户名或用户ID(UID)。
PID 进程的ID。
PPID 父进程的ID。
C CPU使用率(%),进程占用的CPU时间比例。
STIME 进程的开始时间。
TTY 启动进程的终端类型,如果进程不是从终端启动的,可能会显示 ? 或具体的终端名。
TIME 进程占用的总CPU时间,包括用户空间和内核空间。
CMD 启动进程的命令名称。

我们可以看到,STIME表示进程的开始时间,似乎这个字段就可以满足我们的需要。事实上,如果对进程启动时间没有比较精确要求的话STIME确实可以满足我们的需要,因为STIME字段其实算是启动时间的缩写版本,对于当天启动的进程来说,这个字段的值会是启动的时间(格式:时:分,例如18:00),对于早于当天但在今年内启动的进程,这个字段的值会是启动的日期(格式:月日,例如7月20),对于早于今年启动的进程,这个字段的值就直接展示具体启动的年份了。按我观察的话,似乎结果都是不超过5个字符的。

ps -ef命令执行结果

如果我们希望获取进程启动的详细日期怎么办?

答案是使用自定义的输出格式,比如ps -eo pid,lstart,etime,cmd (选项o表示使用用户自定义的格式进行输出)

参数 含义
start 显示进程启动时间的简短格式。通常,它会显示日期时间中的月-日 或者 时-分-秒
start_time 显示进程启动时间的简短格式,通常格式是 年 或者 月-日 或者 时-分,没有秒
etime 显示进程启动的累积时间,通常格式是 天-时-分-秒
etimes 显示进程启动的累积时间,通常格式是以秒为单位
lstart 显示进程的启动时间的长格式,通常格式是 星期-月-日 时-分-秒 年
stime 进程启动时间,和start类似,通常格式是 年 或者 月-日 或者 时-分,没有秒

ps -eo命令执行结果

基于lstartetime字段,我们可以从结果中看到对应进程的完整启动时间和持续时间

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容