每天掌握一个Linux命令 - ps

news2025/6/4 16:34:52

Linux 命令工具 pspstree 详解

一、ps 工具概述

ps(Process Status)是 Linux 系统中用于查看当前进程状态的核心工具,可显示进程的 PID、用户、CPU 占用率、内存使用量、启动时间、命令行参数等信息。

  • 应用场景:监控系统性能、排查进程异常、管理后台服务等。
  • 数据来源:直接读取 /proc 文件系统(存储运行中进程的实时信息)。
二、ps 安装方式

ps 是 Linux 系统的内置工具,无需手动安装,默认随系统预装。

  • 验证安装:在终端输入 ps --versionps -V,若显示版本信息(如 ps (GNU ps) 3.3.17),则说明已安装。
三、ps 核心功能
功能说明
查看进程列表显示当前用户或所有用户的进程,支持按 PID、CPU、内存等排序。
过滤进程通过进程名、用户、状态等条件筛选特定进程(如仅显示某用户的进程)。
获取进程细节显示进程的父进程 PID(PPID)、启动时间、命令行参数、资源占用等详细信息。
监控实时状态配合 watch 命令动态刷新进程状态(如 watch -n 2 ps aux)。
四、ps 基础用法
1. 常用选项组合
  • ps aux(BSD 风格,适用于查看所有用户的进程):

    • a:显示终端中的所有进程(包括其他用户)。
    • u:以用户格式显示(包含用户名、CPU、内存等详细信息)。
    • x:显示无终端的进程(如后台服务)。
      输出字段说明
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.1  16964  3432 ?        Ss   May20   0:06 /sbin/init
    
    • USER:进程所属用户;PID:进程 ID;%CPU:CPU 占用率;%MEM:内存占用率;COMMAND:进程启动命令。
  • ps -ef(System V 风格,适用于查看进程父子关系):

    • -e:等价于 a,显示所有进程;-f:显示完整格式(包含父进程 PPID、启动时间等)。
      典型输出
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 May20 ?        00:00:06 /sbin/init
    
    • PPID:父进程 ID;STIME:进程启动时间。
2. 过滤特定进程
  • 按进程名过滤(使用 grep):
    ps aux | grep nginx  # 查看 nginx 相关进程
    ps -ef | grep [p]ython  # 精确匹配 python 进程(避免包含 grep 自身)
    
  • 按用户过滤
    ps -u username  # 显示用户 username 的进程
    ps -u root -u www-data  # 显示 root 和 www-data 用户的进程
    
  • 按 PID 过滤
    ps -p 1234  # 查看 PID 为 1234 的进程详情
    
五、ps 进阶操作
1. 排序与筛选
  • 按 CPU 占用率降序排序
    ps aux --sort=-%cpu  # 等价于 ps aux | sort -k3nr
    
  • 按内存占用率降序排序
    ps aux --sort=-%mem
    
  • 筛选特定状态的进程(如僵尸进程 Z):
    ps aux | grep ' Z '
    
2. 获取进程树结构

结合 pstree(下文详述)或 ps 自身参数查看进程父子关系:

ps -e -o pid,ppid,comm  # 显示 PID、PPID、进程名
3. 输出格式化

使用 -o 自定义输出字段:

ps -o pid,user,%cpu,cmd  # 仅显示 PID、用户、CPU 占用率、命令
ps -o pid,comm --sort=pid  # 按 PID 排序并显示 PID 和进程名
六、实战案例
案例 1:杀死异常进程
  1. 查找占用 CPU 过高的进程:
    ps aux | sort -k3nr | head -n 5  # 查看 CPU 占用前 5 的进程
    
  2. 终止进程(如 PID 为 12345):
    kill -9 12345
    
案例 2:监控服务启动状态

跟踪 tomcat 进程的启动过程:

watch -n 1 "ps -ef | grep tomcat"  # 每秒刷新一次 tomcat 进程状态
案例 3:分析内存泄漏

持续观察某进程的内存占用变化:

while true; do ps -p 6789 -o %mem; sleep 5; done
七、注意事项
  1. 选项兼容性
    • ps 支持 BSD 风格(如 aux)和 System V 风格(如 -ef),不同风格选项不可混用(如 ps -aux 合法,但 ps -a -u -x 等价于 ps aux)。
  2. 动态性
    • 进程状态实时变化,ps 输出仅为执行瞬间的快照,需结合 top 等动态监控工具长期观察。
  3. 权限问题
    • 普通用户只能查看自己的进程,查看其他用户进程需 root 权限(如 sudo ps -u root)。
  4. 避免误操作
    • 使用 kill -9 强制终止进程前,需确认进程用途,避免终止关键系统服务(如 init 进程)。

pstree 命令补充

1. 工具概述

pstree 用于以树状结构显示进程的父子关系,直观展示进程启动链(如 init 作为所有进程的“根”)。

  • 优势:比 ps -ef 更清晰呈现进程层次,适合排查服务依赖或僵尸进程链。
2. 安装方式
  • 默认安装:多数 Linux 发行版(如 Ubuntu、CentOS)默认预装。
  • 手动安装
    • Ubuntu/Debian:sudo apt install psmisc
    • CentOS/RHEL:sudo yum install psmisc
3. 核心功能与用法
  • 基本用法
    pstree  # 显示以 init(PID=1)为根的进程树
    pstree -u  # 显示每个进程的所属用户
    pstree -p  # 显示每个进程的 PID
    
    典型输出
    systemd(1)─┬─ModemManager(458)─┬─{ModemManager}(458)
               ├─accounts-daemon(636)───{accounts-daemon}(636)
               ├─agetty(1786)
               ├─bash(1785)───pstree(2001)
               └─sshd(937)─┬─sshd(1783)───bash(1784)
                            └─{sshd}(937)
    
  • 按 PID 或进程名过滤
    pstree 1234  # 显示 PID 为 1234 的进程及其子进程
    pstree nginx  # 显示 nginx 进程的树状结构
    
  • 横向显示(适合宽屏)
    pstree -H  # 以横向层级展示进程树
    
4. 实战案例
  • 案例:排查僵尸进程链
    若发现僵尸进程(状态为 Z),使用 pstree -p 定位其父进程,逐层终止:
    pstree -p | grep Z  # 查找包含僵尸进程的分支
    kill -9 父进程PID    # 终止父进程以清理僵尸子进程
    

总结

  • ps 是进程查询的基础工具,通过不同选项组合可灵活获取进程信息;
  • pstree 以可视化树状结构辅助分析进程关系,两者结合使用能更高效排查系统问题。
    建议日常运维中配合 top(动态监控)、kill(进程管理)等工具形成完整的进程管理流程。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客小白月赛117

前言:solveABCF相对简单,D题思路简单但是实现麻烦,F题郭老师神力b( ̄▽ ̄)。 A. 好字符串 题目大意:给定字符串s,里面的字母必须大小写同时出现。 【解题】:没什么好说的&#xff0…

美化显示GDB调试的数据结构

笔者在前面的博文记一次pdf转Word的技术经历中有使用到mupdf库,该库是使用C语言写的一个操作PDF文件的库,同时提供了Python接口,Java接口和JavaScript接口。 在使用该库时,如果想要更高的性能,使用C语言接口是不二的选…

一篇学习CSS的笔记

一、简介 Cascading Style Sheets简称CSS,中文翻译为层叠样式表。当HTML被发明出来初期,不同的浏览器提供了各种各样的样式语言给用户控制网页的效果,HTML包含的显示属性并不是很多。但是随着各种使用者对HTML的需求,HTML添加了大…

StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践

导读: 本文将深入探讨基于 StarRocks 和 Iceberg 构建的云原生湖仓分析技术,详细解析两者结合如何实现高效的查询性能优化。内容涵盖 StarRocks Lakehouse 架构、与 Iceberg 的性能协同、最佳实践应用以及未来的发展规划,为您提供全面的技术解…

笔试笔记(运维)

(数据库,SQL) limit1 随机返回其中一个聚合函数不可以嵌套使用 【^】这个里面的数据任何形式组合都没有 sql常用语句顺序:from-->where-->group by-->having-->select-->order by-->limit 只要其中一个表存在匹…

使用langchain实现五种分块策略:语义分块、父文档分块、递归分块、特殊格式、固定长度分块

文章目录 分块策略详解1. 固定长度拆分(简单粗暴)2. 递归字符拆分(智能切割)3. 特殊格式拆分(定向打击)Markdown分块 4. 语义分割(更智能切割)基于Embedding的语义分块基于模型的端到…

【项目记录】登录认证(下)

1 过滤器 Filter 刚才通过浏览器的开发者工具,可以看到在后续的请求当中,都会在请求头中携带JWT令牌到服务端,而服务端需要统一拦截所有的请求,从而判断是否携带的有合法的JWT令牌。 那怎么样来统一拦截到所有的请求校验令牌的有…

linux文件管理(补充)

1、查看文件命令 1.1 cat 用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。 用法: cat 参数 文件名 参数: -n:显示行号,会在输出的每一行前加上行号。 -b:显示行号,…

Python训练营---Day42

DAY 42 Grad-CAM与Hook函数 知识点回顾 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 作业:理解下今天的代码即可 1、回调函数 回调函数(Callback Function)是一种特殊的函数,它作为参数传递给另一个函数&#…

基于空天地一体化网络的通信系统matlab性能分析

目录 1.引言 2.算法仿真效果演示 3.数据集格式或算法参数简介 4.MATLAB核心程序 5.算法涉及理论知识概要 5.1 QPSK调制原理 5.2 空天地一体化网络信道模型 5.3 空天地一体化网络信道特性 6.参考文献 7.完整算法代码文件获得 1.引言 空天地一体化网络是一种将卫星通信…

c++ opencv 形态学操作腐蚀和膨胀

https://www.jb51.net/article/247894.htm(上图图片来自这个博客) https://codec.wang/docs/opencv/basic/erode-and-dilate(上图图片参考博客) cv::Mat kernel cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); cv::erode(src, dst, kern…

【c++】【数据结构】红黑树

目录 红黑树的定义红黑树的部分模拟实现颜色的向上更新旋转算法单旋算法双旋算法 红黑树与AVL树的对比 红黑树的定义 红黑树是一种自平衡的二叉搜索树,通过特定的规则维持树的平衡。红黑树在每个结点上都增加一个存储位表示结点的颜色,结点的颜色可以是…

基于SpringBoot+Redis实现RabbitMQ幂等性设计,解决MQ重复消费问题

解决MQ重复消费问题 一、实现方案 本方案参考 「RabbitMQ消息可靠性深度解析|从零构建高可靠消息系统的实战指南」,向开源致敬! 1、业务层幂等处理: 每个消息携带一个全局唯一ID,在业务处理过程中,首先检查…

使用lighttpd和开发板进行交互

文章目录 🧠 一、Lighttpd 与开发板的交互原理1. 什么是 Lighttpd?2. 与开发板交互的方式? 🧾 二、lighttpd.conf 配置文件讲解⚠️ 注意事项: 📁 三、目录结构说明💡 四、使用 C 编写 CGI 脚本…

DRF的使用

1. DRF概述 DRF即django rest framework,是一个基于Django的Web API框架,专门用于构建RESTful API接口。DRF的核心特点包括: 序列化:通过序列化工具,DRF能够轻松地将Django模型转换为JSON格式,也可以将JS…

2024年09月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:有几个PAT 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位,第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个 PAT? 时间限制:1000 内存限制:26214…

免费且好用的PDF水印添加工具

软件介绍 琥珀扫描.zip下载链接:https://pan.quark.cn/s/3a8f432b29aa 今天要给大家推荐一款超实用的PDF添加水印工具,它能够满足用户给PDF文件添加水印的需求,而且完全免费。 这款PDF添加水印的软件有着简洁的界面,操作简便&a…

mqtt协议连接阿里云平台

首先现在的阿里云物联网平台已经不在新购了,如下图所示: 解决办法:在咸鱼上租用一个账号,先用起来。 搭建阿里云平台,参考博客: (一)MQTT连接阿里云物联网平台(小白向&…

一文详谈Linux中的时间管理和定时器编程

(目录) 先说一些在计算机中需要用到时间的地方:系统日志log、OS调度(时间片、定时器)等等~~ 时间的计量 计时的方式发展:日晷、沙漏 -> 机械钟 -> 石英振荡器、晶振 -> 铯原子钟 -> 氢原子钟 计算机中的计时方式&…

性能优化 - 理论篇:常见指标及切入点

文章目录 引言一、 Java 性能优化的核心思路二、为什么要度量?三、常用性能衡量指标详解3.1 吞吐量与响应速度3.2 响应时间的具体度量:平均响应时间与百分位数3.3 并发量3.4 秒开率(页面秒开)3.5 正确性(功能可用性&am…