显示进程时间

你说的 ps 命令想显示进程的启动时间、运行时间等详细信息,Linux 下确实可以通过 ps 的不同选项来查看。下面是详细用法和示例:


ps 显示启动时间和运行时间等详细信息

常用参数:

信息项ps 格式说明说明
启动时间 lstartstart 进程的完整启动时间(星期 月 日 时分秒 年)
运行时间 etime 进程运行了多久(格式:[[dd-]hh:]mm:ss)
累计CPU时间 cputimetime 进程占用 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:25Jul04 这样的简短格式


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 的更精准时间计算一起输出,方便你做自动化监控。


需要哪种格式或结合什么用法,可以告诉我!

posted on 2025-07-07 21:09  吃草的青蛙  阅读(68)  评论(0)    收藏  举报

导航