lstart是查看进程确切启动时刻(年月日时分秒)的唯一推荐字段,输出如“mon apr 21 14:30:12 2026”,避免stime等模糊格式;etime适合计算运行时长(秒数),/proc/pid/stat第22字段结合btime可获最高精度。

ps -eo lstart 是最直接的启动时间字段
想一眼看到进程确切的启动时刻(年月日时分秒),lstart 是唯一推荐字段。它输出类似 Mon Apr 21 14:30:12 2026 的完整时间戳,带年份,不会因跨年或月初混淆。别用 stime——它只显示“几月几号几点”,比如 Apr21 或 14:30,一旦进程是上周或去年启动的,根本没法判断。
常用组合:
-
ps -eo pid,lstart,comm:列出所有进程 PID、启动时间、命令名 -
ps -o lstart= -p 1234:只查 PID 为 1234 的进程启动时间(=后不带空格,避免头部标题) -
ps -eo pid,lstart,cmd --sort=-lstart | head -3:按启动时间倒序,取最近三个进程
注意:lstart 在 Alpine Linux 等基于 BusyBox 的系统中不可用,会报错 “invalid format”。
etime 比较适合算运行了多久
etime 字段返回的是进程自启动以来经过的秒数(含休眠),数值稳定、易脚本化。如果你关心“这个服务跑了 3 天 2 小时”,而不是“它具体哪天几点启的”,etime 更实用。
换算示例(bash):
etime=$(ps -o etime= -p 1234 | xargs) date -d "@$(($(date +%s) - etime))" "+%Y-%m-%d %H:%M:%S"
常见陷阱:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
etime值可能为负(极少见),通常表示内核时间异常或进程刚 fork 尚未 exec,此时忽略该值 - 某些容器环境(如旧版 Docker)中,
etime可能从容器启动时间起算,而非进程自身 exec 时间 - 不要用
time字段——那是累计 CPU 占用时间,不是运行时长
旧系统 fallback:看 ps -ef 的 STIME 列
CentOS 6、部分嵌入式系统等老环境不支持 lstart 和 etime,只能靠 ps -ef 输出里的 STIME 列。它的格式不统一:May12 表示本月 12 日,2025 表示去年启动,10:23 表示今天 10:23 启动。
这种模糊性意味着你必须结合上下文判断:
- 先跑
date确认当前日期和年份 - 对关键进程(如数据库、Web 服务),配合
ps -eo pid,user,tty,stime,cmd | grep -i postgres缩小范围 - 如果
STIME显示Jan01但系统是 4 月,大概率是跨年启动;若显示2024,而当前是 2026 年,则说明已运行两年多
这种推断方式不可用于自动化,仅作人工排查参考。
/proc/PID/stat 是精度最高的底层来源
当其他方法都不够准(比如需要纳秒级对齐、调试内核行为),就得读 /proc/PID/stat。第 22 个字段是进程启动时的内核滴答数(jiffies),需结合 /proc/stat 中的 btime(系统启动 Unix 时间戳)换算:
awk '{print $22}' /proc/1234/stat # 得到 jiffies
grep btime /proc/stat | awk '{print $2}' # 得到系统启动秒数
echo $(($(awk '{print $22}' /proc/1234/stat) / $(getconf CLK_TCK))) + $(grep btime /proc/stat | awk '{print $2}') | bc
关键细节:
-
CLK_TCK通常是 100,但不能硬编码,必须用getconf CLK_TCK - 这个值是进程被 fork 出来的时刻,不是 exec 第一个程序的时间,对 shell 启动的子进程来说,可能比你预期早几十毫秒
- 普通运维极少需要走到这步,除非你在写监控 agent 或排查调度延迟问题
真正容易被忽略的是:不同 Linux 发行版对 ps 字段的支持差异比文档写的更隐蔽——比如 Ubuntu 22.04 默认 ps 支持 lstart,但同一内核版本的 Debian 11 可能因 ps 工具链版本低而不支持。查之前,先 ps --version 看一眼。










