获取进程启动时间¶
ps
检查启动时间¶
使用 ps进程检查工具 命令可以轻易获得进程启动时间:
检查进程启动时间
lstart
:
ps -eo pid,ppid,lstart,cmd | grep qemu-system-x86_64
输出显示案例类似如下:
7300 Sun Aug 6 11:10:56 2023 /usr/bin/qemu-system-x86_64 -name guest=z-b-data-3,...
7354 Sun Aug 6 11:11:03 2023 /usr/bin/qemu-system-x86_64 -name guest=z-b-data-1,...
7405 Sun Aug 6 11:11:09 2023 /usr/bin/qemu-system-x86_64 -name guest=z-b-data-2,...
备注
在 ps
检查进程启动时间的 field
格式参数可以有3种:
start
启动时间类似09:46:10
,但是超过24小时的进程会显示为日期,类似Aug 31
stime
启动时间类似09:10
,但是超过24小时的进程也是显示为日期,类似Aug31
lstart
启动时间最详尽和标准化,非常方便对比检查,类似Thu Aug 31 23:58:01 2023
强烈推荐
从 stat
获取进程启动时间¶
我在生产实践中遇到过一种异常情况,OS异常导致 ps
命令无法执行。这时候可以考虑从 /proc
目录下进程对应pid的 stat
来获取信息:
# 这里 <PID> 替换成进程pid
awk -v ticks="$(getconf CLK_TCK)" 'NR==1 { now=$1; next }
END { print strftime("%c", systime() - (now-($20/ticks))) }' /proc/uptime RS=')' /proc/<PID>/stat
备注
从 stat
文件中读取的数值是从系统启动到进程启动启动之间的 clock ticks
,上述脚本命令做了转换