ps -eo pid,comm,time 中的 time 表示进程自启动以来实际占用 cpu 的总时长,单位为秒,显示为 mm:ss 或 hh:mm:ss 格式,不包含等待或睡眠时间。

直接用 ps -eo pid,comm,time 就能查到每个进程的 CPU 累计时间,这个 time 指的是进程自启动以来实际占用 CPU 的总时长,不包括等待、睡眠等空闲时间。
time 字段的含义和格式
ps 输出中的 TIME 列是累计 CPU 时间,不是系统运行时长。它的单位是“CPU 秒数”,但显示为时间格式:
- 短时间(不足 1 小时):显示为
MM:SS,例如02:15表示 2 分 15 秒 CPU 时间 - 长时间(1 小时及以上):显示为
HH:MM:SS,例如15:42:08表示 15 小时 42 分 8 秒 - 注意:它不会显示天数,哪怕进程跑了好几天,只要 CPU 时间没满 24 小时,就不会出现
dd-前缀
快速定位某个进程的 CPU 时间
如果知道进程名(比如 nginx、java),可以这样过滤:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
ps -eo pid,comm,time | grep nginx- 或者更精确一点:
ps -C nginx -o pid,comm,time(-C 按命令名匹配,避免 grep 误匹配) - 想看 top-like 排序效果,加
--sort -time:ps -eo pid,comm,time --sort -time | head -10—— 查 CPU 时间最长的前 10 个进程
与 etime 对比,判断进程行为
CPU 时间(time)和已运行时间(etime)一起看更有价值:
ps -eo pid,comm,etime,time | grep myapp- 如果 etime 是 3 天,time 只有 42 秒 → 进程大部分时间在休眠或等 I/O,很轻量
- 如果 etime 是 2 小时,time 接近 1 小时 50 分 → 进程几乎一直在满负荷用 CPU,可能是计算密集型任务
需要秒级数值?用 awk 转换
脚本处理时,常需把 HH:MM:SS 或 MM:SS 转成总秒数:
- 提取并转换单个进程:
ps -p 1234 -o time= | awk -F: '{if (NF==2) print $1*60+$2; else print $1*3600+$2*60+$3}' - 批量转换所有进程:
ps -eo pid,time | awk 'NR>1 {split($2,a,":"); print $1, (length(a)==2 ? a[1]*60+a[2] : a[1]*3600+a[2]*60+a[3])}'










