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 提供了便捷的默认完整视图。
相关推荐
我一定会有钱5 小时前
Linux爆音问题解决方法(隔一会会有奇怪噪音)
linux·运维·服务器
Dobby_057 小时前
【Ansible】变量与敏感数据管理:Vault加密与Facts采集详解
linux·运维·云原生·ansible
记忆不曾留8 小时前
unbuntu 20.04 docker 部署wordpress
运维·docker·容器·wordpress·独立站建站
l_tian_tian_8 小时前
SpringClound——网关、服务保护和分布式事务
linux·服务器·前端
zcz16071278218 小时前
服务器与客户端
运维·服务器
准女婿_8 小时前
优考试局域网系统V6.0.0版
linux·windows·用户运营
门思科技8 小时前
LoRaWAN 的网络拓扑全解析:架构、原理与应用实践
服务器·网络·人工智能·科技·物联网·架构
我的收藏手册9 小时前
Linux 网络命令大全
linux·服务器·网络
xx.ii9 小时前
28.Linux :通过源代码编译安装lamp
linux·运维·服务器
siriuuus9 小时前
Linux文本三剑客的使用及常见重点操作
linux·文本三剑客