首页/系统/Linux 运维命令速查/ps 自定义输出列
进程与作业69 条

ps 自定义输出列

用 -o 精确选取列(pid/ppid/stat/etime/lstart/cmd),排查「谁起的、跑了多久、什么状态」时信息最干净。

Linux 运维命令速查系统更新于 2026-10-13

ps -o 是什么

ps 默认输出列固定,还会按终端宽度截断 CMD 列,排查时常看不全。ps -o 让你自定义显示的列:配合 -e 看全局、-p 看指定进程、-L 看线程、--sort 排序,是获取「谁起的、跑了多久、什么状态、吃了多少资源」最省字数的方式。ps 读的是 /proc 的瞬时快照,不做持续采样,需要看趋势时要换 top、pidstat 或 sar。

基本信息

适用平台Linux(procps-ng);BSD 与 UNIX 两种选项风格见下方提示
命令语法ps -eo 列1,列2,... [--sort=列]
常用列pid ppid stat etime etimes lstart cmd %cpu %mem nlwp rss vsz wchan user
取指定进程ps -p PID -o pid,ppid,stat,etime,lstart,cmd
线程视图ps -L -o pid,tid,psr,pcpu,comm -p PID
权限说明普通用户可看自己的进程;看全部进程的完整命令行与 wchan 通常需要 root

典型使用场景

  • 确认上线时间:lstart 给出精确启动时刻,与 etime 互相印证,判断滚动更新是否真的生效
  • 线程排查:nlwp 看线程总数,再用 -L 逐线程定位哪个 tid 占 CPU
  • 僵尸进程定位:stat 含 Z 的进程,顺着 ppid 找不负责任的父进程
  • 孤儿进程:ppid 为 1 说明原父进程已退出、进程被 init 或 systemd 收养
  • 脚本取数:只输出需要的列,避免解析带空格的对齐文本

常用示例

常用示例
ps -eo pid,ppid,stat,etime,cmd --sort=-etime | head      # 运行时间最长的进程
ps -eo pid,lstart,cmd | grep -i java                      # 查看精确启动时间
ps -eo pid,nlwp,cmd --sort=-nlwp | head                   # 线程数排行
ps -p 1234 -o pid,ppid,stat,etime,lstart,cmd              # 单进程完整详情
ps -eo stat | sort | uniq -c | sort -rn | head            # 进程状态分布
ps -eo pid,user,pcpu,pmem,rss,cmd --sort=-rss | head      # 按常驻内存排行

常用输出列读法

列含义正常与异常
pid / ppid进程号与父进程号ppid 为 1 多为被 systemd 收养的守护进程
stat进程状态与附加标志Z 僵尸、D 不可中断都需要单独处理
etime / etimes已运行时长:格式化文本 / 纯秒数要参与数值比较就用 etimes
lstart进程启动的绝对时刻与重启记录、发布时间对照可验证更新是否生效
%cpu / %mem从进程启动至今的平均占用不是瞬时值,短命的高 CPU 进程会被明显稀释
nlwp线程数量Java 类进程几十到几百正常,持续增长提示线程泄漏
wchan进程正在等待的内核函数D 状态配合 dmesg 判断是否卡在磁盘 IO
stat 首位含义:R 运行、S 可中断睡眠、D 不可中断(多在等 IO)、Z 僵尸、T 停止、I 空闲内核线程;后缀要留意:s 表示会话首进程、l 表示多线程、+ 表示前台进程组。
ps 的两种选项风格不能混用:BSD 风格(ps aux、ps axjf)与 UNIX 风格(ps -ef、ps -eo)混写会直接报错或静默忽略某个选项。脚本里统一用 -eo 这种 UNIX 风格,跨发行版更稳。另外 --sort 与 -o 的可选列都是 procps 的扩展,BusyBox 等精简实现上并不完整,脚本需要自己接管道 sort 兜底。

易错点

  • etime 是格式化字符串,比较大小要用 etimes(秒)
  • D 状态进程杀不掉是正常现象:它在等 IO 或文件系统,先查挂载、磁盘与 dmesg,反复 kill -9 无用
  • %cpu 是生命周期均值而非瞬时值,判断「此刻谁在吃 CPU」要用 top 或 pidstat
  • 容器内 ps 只能看到本 PID namespace 的进程,看不到宿主机业务进程属正常
  • BSD 与 UNIX 风格选项混用会报错,例如 ps aux -ef 在多数系统上直接失败

数据来源与参考

  • man 1 ps(procps-ng 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌