显示进程时间
你说的 ps 命令想显示进程的启动时间、运行时间等详细信息,Linux 下确实可以通过 ps 的不同选项来查看。下面是详细用法和示例:
ps 显示启动时间和运行时间等详细信息
常用参数:
| 信息项 | ps 格式说明 | 说明 |
|---|---|---|
| 启动时间 | lstart 或 start |
进程的完整启动时间(星期 月 日 时分秒 年) |
| 运行时间 | etime |
进程运行了多久(格式:[[dd-]hh:]mm:ss) |
| 累计CPU时间 | cputime 或 time |
进程占用 CPU 总时间 |
| 进程创建时间(简短) | start |
启动时间(简短格式) |
1. 查看所有进程完整启动时间和运行时间
ps -eo pid,lstart,etime,cmd
-
pid:进程ID -
lstart:完整启动时间(例如:Thu Jul 4 10:25:00 2025) -
etime:运行时长 -
cmd:命令行
示例输出:
PID STARTED ELAPSED CMD
1234 Thu Jul 4 10:25:00 2025 01:10:05 /usr/bin/bash
5678 Wed Jul 3 15:00:00 2025 20-05:30:10 /usr/bin/python3 myscript.py
2. 显示CPU时间(累积CPU时间)
ps -eo pid,lstart,time,cmd
-
time是进程占用CPU的总时间(不等同运行时间)
3. 显示简洁的启动时间(仅时间)
ps -eo pid,start,etime,cmd
start 显示类似:10:25 或 Jul04 这样的简短格式
4. 显示指定进程的详细时间
比如查看 PID=1234:
ps -p 1234 -o pid,lstart,etime,time,cmd
5. 结合 top 命令显示的内容解释
-
TIME+是进程累计占用 CPU 时间 -
START是进程启动时间(简短) -
ELAPSED(ps) 是进程运行时间,top 默认不显示
进阶:使用 proc 文件系统获得精确启动时间
如果想计算进程启动的绝对时间,除了 ps,可以查 /proc/[pid]/stat 里的第 22 个字段(进程启动的时间戳,单位是系统时钟滴答数 jiffies)配合系统启动时间计算:
# jiffies per second
HZ=$(getconf CLK_TCK)
# 进程启动时间戳(单位jiffies)
starttime=$(awk '{print $22}' /proc/1234/stat)
# 系统启动时间戳(秒)
btime=$(grep btime /proc/stat | awk '{print $2}')
# 计算进程启动时间(Unix时间戳)
start_sec=$(( btime + starttime / HZ ))
# 转换为人类可读格式
date -d @"$start_sec"
如果你需要,我可以帮你写一个脚本,把 ps 的这些时间字段加上 /proc 的更精准时间计算一起输出,方便你做自动化监控。
需要哪种格式或结合什么用法,可以告诉我!
浙公网安备 33010602011771号