Linux ps -ef 命令解析

ps 是 Linux 系统中用于查看进程状态的标准命令,-ef 是其参数组合,用于输出系统范围内所有进程的完整信息。以下是对该参数的详细解析:

1. 核心参数含义

  • -e
    表示显示所有进程(包括系统进程和用户进程),相当于 -A 参数。该选项会列出系统中当前运行的所有进程,而不限于当前用户的会话。
  • -f
    表示以完整格式(Full Format)输出进程信息。这比默认输出提供更详细的字段,包括进程的用户、父子关系、启动时间等。

2. 输出格式说明

当执行 ps -ef 时,输出通常包含以下列(字段):

  • UID:进程所有者的用户名。
  • PID:进程的唯一标识符(Process ID)。
  • PPID:父进程的 PID(Parent Process ID),显示进程的创建来源。
  • C:CPU 利用率(百分比),表示进程的 CPU 使用情况。
  • STIME进程的启动时间或日期
  • TTY :与进程关联的终端设备(例如 tty1 表示本地终端,? 表示无关联终端)。
  • TIME进程已使用的累计 CPU 时间 (格式为 HH:MM:SS)。
  • CMD:启动进程的命令行或可执行文件的名称。

3. 使用场景示例

3.1 基本用法 :直接运行 ps -ef 可快速查看所有进程的详情

复制代码
UID        PID  PPID  C STIME TTY          TIME CMD
root       540     1  0  2024 ?        00:02:21 /sbin/auditd
ntp       3690     1  0  2024 ?        00:00:26 /usr/sbin/ntpd -u ntp:ntp -g
root      2753  2716 17  2024 ?        42-07:05:06 /usr/local/jdk-21.0.4/bin/java -server -Xms4g -Xmx4g -XX:+UseG1GC -XX:G1HeapRegionSize

注意 :数值 42-07:05:06 表示该进程自启动以来累计消耗的CPU时间**。**

  • 非进程存活时长 :此时间仅统计进程 实际占用 CPU 资源的时间 ,而非进程从启动至今的总运行时长(后者由 STIME 列表示进程的启动时间)。
  • 累积计算:若进程多次运行,该值会累积历史 CPU 占用时间。
  • 格式规则 :当累计时间超过 24 小时,输出会自动转换为 天数-小时:分钟:秒 的格式(42-07:05:06 代表 42 天 7 小时 5 分钟 6 秒)。

3.2 进阶使用:若需进一步筛选,可结合其他参数:

  • ps -u <username> #显示指定用户的进程。
  • ps -eLf #显示所有线程(-L 扩展)。
  • ps -ef | grep -E 'nginx|mysql' # 同时匹配多个服务名,支持正则表达式
  • ps -ef | grep '[s]shd' # 用字符集语法屏蔽 grep 进程自身
  • ps -ef --sort=-%cpu | head -10 # CPU使用率倒序(前10)
  • ps -ef --sort=+%mem | head -10 # 内存占用量正序 ,-为降序,+为升序,支持 %cpu, %mem, start_time 等字段。
  • ps -e --forest | grep nginx # 直接生成指定进程的树状图
  • ps -eo pid,user,cmd,etime # 显示进程PID、用户、命令、已运行时长 ps -e -o
  • ppid=,comm= --no-header # 仅输出父进程ID和命令名(无标题行)
  • watch "ps -ef --sort=-%cpu | grep -v 'ps -ef' | head -n 15" #实时筛选高负载进程
  • ps -ef -u www-data | wc -l #统计特定用户进程数

PS: 僵尸进程筛选

筛选僵尸进程状态

  • ps aux | awk '{if (8=="Z" \|\| 8=="Z+") print $0}'

定制化输出

  • ps -e -o pid,ppid,stat,cmd | grep 'Z'

僵尸进程的影响与处理原则

  • 影响
    僵尸进程不消耗 CPU/内存,但占用系统进程表项,过多时可能阻碍新进程创建。
  • 处理优先级
    优先检查父进程(PPID)是否异常。若父进程为 init(PID=1),系统通常会定期回收,无需手动干预。
  • 预防措施
    检查程序代码中是否缺失对子进程的 wait() 调用,确保正确回收资源。

4. 注意事项

  • 兼容性-ef 参数在大多数 Linux 发行版中通用(如 Ubuntu、CentOS),但部分 BSD 变体可能使用不同语法(如 ps aux)。
  • 性能影响ps -ef 通常无显著系统开销,但在进程数极高时,可配合 grep 过滤输出(例如 ps -ef | grep nginx)。
  • 其他常用参数可补充使用(如 -o 自定义输出字段、-p 指定 PID),但 -ef 提供了便捷的默认完整视图。
相关推荐
没有余地 EliasJie2 分钟前
Ubuntu/Debian 搭建 Nginx RTMP 服务器全攻略
服务器·ubuntu·debian
自由鬼5 分钟前
AI赋能操作系统:通往智能运维的未来
linux·运维·服务器·人工智能·程序人生·ai·操作系统
Tjyuking12 分钟前
OS架构整理
运维·c++·缓存·架构·操作系统
x晕x24 分钟前
Qt 消息弹窗 Toast
linux·c++·windows·qt·mac
鹏大师运维39 分钟前
MBR与GPT分区表深度解析:硬盘分区该怎么选?
linux·运维·服务器·gpt·国产操作系统·mbr·统信uos
三雷科技42 分钟前
window中qemu使用(安装ubuntu系统)
linux·运维·ubuntu
hh真是个慢性子43 分钟前
MySQL自动化安装工具-mysqldeploy
运维·数据库·mysql·golang·自动化
十五年专注C++开发44 分钟前
MakeInstaller: 一款麒麟操作系统安装包制作工具
linux·c++·打包工具·安装包制作·麒麟系统
野原鑫之祝1 小时前
嵌入式开发学习———Linux环境下IO进程线程学习(一)
linux·c语言·学习·vim·嵌入式
破刺不会编程1 小时前
linux线程互斥和同步
linux·运维·服务器·开发语言·网络