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 提供了便捷的默认完整视图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/2686.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2025年湖北中级注册安全工程师报考那些事

2025年湖北中级注册安全工程师报考那些事各位从事建筑安全的人员看过来&#xff0c;注册安全工程师是你们行业认可度较为高的证书。关于报考无论是安全相关专业跟不相关的专业都是可以报考的。只是年份要求不同。 本科&#xff1a;相关专业3年&#xff0c;不相关专业4年。 专科…

容器与虚拟机的本质差异:从资源隔离到网络存储机制

目录 专栏介绍 作者与平台 您将学到什么&#xff1f; 学习特色 容器与虚拟机的本质差异&#xff1a;从资源隔离到网络存储机制 一、容器与虚拟机的本质区别 1.1 资源抽象层次差异 1.2 资源消耗与性能对比 1.3 隔离性深度差异 二、容器网络基础架构 2.1 Docker网络模型…

FPGA实现SRIO高速接口与DSP交互,FPGA+DSP异构方案,提供3套工程源码和技术支持

目录1、前言&#xff1a;SRIO在FPGADSP架构中的作用工程概述免责声明2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的FPGADSP异构方案我这里已有的 GT 高速接口解决方案3、工程详细设计方案工程设计原理框图FPGA端工程源码FPGA端SRIO从…

网络安全第15集

前言&#xff1a; 挖不到一点&#xff0c;又来学习了 内容&#xff1a; 1、根据端口扫描可以得到相关的信息 端口扫描&#xff0c;根据扫描的端口&#xff0c; 可以得到目标服务器开启的应用服务器&#xff0c;的具体相关信息&#xff0c;数据库的相关信息 web服务器&…

【Linux】重生之从零开始学习运维之Mysql事务

事务开启事务begin;提交事务commit;select * from stu;事务回滚begin; select * from stu; update stu set age100 where id10; select * from stu; rollback;事务保存点rollback to p2; rollback to p1;因回到p1&#xff0c;无后面记录&#xff0c;所以无法回到p2、p3保存点。…

深入理解Java Map的entrySet()方法

文章目录深入理解Java Map的entrySet()方法一、entrySet()方法概述二、为什么需要entrySet()三、entrySet()的核心特性四、Map.Entry接口详解五、entrySet()的典型使用场景1. 遍历Map2. 批量修改值3. 过滤Map4. 并行处理六、性能考虑七、Java 8的增强八、注意事项九、总结深入理…

webpack 原理及使用

【点赞收藏加关注,前端技术不迷路~】 一、webpack基础 1.核心概念 1)entry:定义入口,webpack构建的第一步 module.exports ={entry:./src/xxx.js } 2)output:出口(输出) 3)loader:模块加载器,用户将模块的原内容按照需求加载成新内容 比如文本加载器raw-loade…

5.1 动⼿实现⼀个 LLaMA2 ⼤模型

Meta&#xff08;原Facebook&#xff09;于2023年2月发布第一款基于Transformer结构的大型语言模型LLaMA&#xff0c;并于同年7月发布同系列模型LLaMA2。5.1.1 定义超参数自定义一个ModelConfig类&#xff0c;来存储和记录超参数&#xff0c;这里继承了PretrainedConfig类&…

【Python】自动化GIT提交

在日常开发中&#xff0c;我们经常需要频繁地向 Git 仓库提交代码。虽然 git add、git commit、git push 这几个命令并不复杂&#xff0c;但重复操作容易出错&#xff0c;也浪费时间。本文将介绍如何使用 Python 脚本自动化完成 Git 提交流程&#xff0c;让开发更高效&#xff…

LeetCode 85. 最大矩形

预备知识 84.柱状图中最大的矩形&#xff1a;题目链接 思路&#xff1a;在求柱状图最大面积时&#xff0c;我们可以枚举每一根柱子&#xff0c;并且假设这根柱子就是最大面积中最低的那一根柱子。由于最大面积的选中的柱子中&#xff0c;矩形的高取决于最低的柱子&#xff0c…

Java Collections工具类

Collections 类:Java 中提供的一组静态方法&#xff0c;用于操作集合。常用方法: 1. 排序 Collections.sort(List<T> list) 对指定列表进行升序排序。 Arrays.asList 将一个数组转化为一个List集合 List<Integer> numbers Arrays.asList(5, 2, 8, 1); Collections…

MCU+RTOS调试

1. 引言在做项目时&#xff0c;百分之三十的时间写代码&#xff0c;还有百分之70的时间用于调试。本期将以Keil为例进行调试章节的讲解&#xff0c;目的在于做出一个标准化的调试步骤&#xff0c;方便大家学习如何调试代码。内容分为基础调试、中级调试及进阶调试三部分&#x…