Linux ps 进程查看命令详解

Linux ps 进程查看命令详解

这两个是 Linux 运维中最经典、最常用 的进程排查命令,核心是通过 ps 全量查询 + grep 精准过滤,快速定位目标服务进程。


1. 命令逐段拆解

ps -ef | grep java

表格

命令 / 参数 英文全称 作用说明
ps Process Status 系统进程状态查看工具,用于列出当前运行的所有进程
-e every / all 显示系统中所有进程(包含所有用户、所有终端的进程)
-f full format 完整格式输出,包含 UID、PID、PPID、启动时间、完整命令等全量信息
` ` pipe(管道符)
grep java Global Regular Expression Print 从全量进程中,过滤出包含 java 关键字的进程,即所有 Java 应用进程(如 Tomcat、SpringBoot)

ps aux | grep tomcat

表格

命令 / 参数 英文全称 作用说明
a all users 显示所有用户的进程(默认仅显示当前用户)
u user-oriented 面向用户的格式输出,重点展示 CPU、内存占用率等资源指标
x without tty 显示无控制终端的进程(如后台守护进程)
grep tomcat 同上 过滤出包含 tomcat 关键字的进程,精准定位 Tomcat 服务

2. 核心区别与适用场景

表格

特性 ps -ef ps aux
核心输出 进程父子关系(PPID)、完整启动命令、启动时间 CPU 使用率 (% CPU)、内存使用率 (% MEM)、进程状态 (STAT)
适用场景 排查进程依赖、根据 PID 终止进程、追溯父进程 监控服务资源占用、排查内存 / CPU 飙高问题
标准来源 POSIX 标准(兼容性更强,所有 Unix/Linux 系统通用) BSD 风格(Linux 系统常用,输出更直观)

3. 输出字段详解(关键信息)

ps -ef 核心字段

表格

字段 含义
UID 进程所属用户 ID
PID 进程 ID(唯一标识,用于 kill 终止进程)
PPID 父进程 ID(用于追溯进程来源)
C CPU 占用率
STIME 进程启动时间
CMD 完整启动命令(可看到程序路径、参数)

ps aux 核心字段

表格

字段 含义
USER 进程所属用户名
PID 进程 ID
%CPU CPU 使用率
%MEM 物理内存使用率
VSZ 虚拟内存大小
RSS 常驻内存大小(实际占用物理内存)
STAT 进程状态(R 运行、S 睡眠、Z 僵尸等)

4. 进阶优化用法(避坑 + 提效)

① 排除 grep 自身进程

直接执行命令会匹配到 grep java 这个临时进程,可通过正则排除:

bash

运行

复制代码
ps -ef | grep [j]ava
ps aux | grep [t]omcat

原理:[j]ava 是正则表达式,仅匹配 java,不匹配 grep 命令中的 [j]ava,从而过滤掉自身。

② 结合 awk 提取 PID(一键杀进程)

复制代码
# 提取 Java 进程 PID 并终止
ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9
  • grep -v grep:排除 grep 进程

-v = invert match 中文意思:反向匹配 / 排除 / 取反

  • awk '{print $2}':提取第 2 列(PID)
  • xargs kill -9:批量强制终止进程

③ 实时监控进程

ps 是静态快照,如需实时监控,可搭配 top

bash

运行

复制代码
top -p <PID>  # 实时监控指定 PID 的资源占用

5. 补充说明

  • Tomcat 本质是 Java 进程ps aux | grep tomcat 能查到,是因为 Tomcat 启动命令中包含 tomcat 关键字;如果是 SpringBoot 等无 tomcat 关键字的 Java 服务,需用 grep java 查找。
  • 权限问题 :普通用户仅能查看自己的进程,root 用户可查看所有进程。
  • 替代工具 :现代系统也常用 pgrep java 直接获取 Java 进程 PID,无需管道过滤。
相关推荐
功德+n2 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
人工干智能2 小时前
科普:python中你写的模块找不到了——`ModuleNotFoundError`
服务器·python
左手厨刀右手茼蒿2 小时前
Linux 内核中的块设备驱动:从原理到实践
linux·嵌入式·系统内核
杨云龙UP2 小时前
从0到1快速学会Linux操作系统(基础),这一篇就够了!
linux·运维·服务器·学习·ubuntu·centos·ssh
HXQ_晴天2 小时前
Ubuntu 设置中文输入法
linux·运维·ubuntu
Dovis(誓平步青云)2 小时前
《Linux 信号入门:搞懂 “进程通信的紧急电话” 到底怎么用(初篇)》
linux·运维·服务器
左手厨刀右手茼蒿2 小时前
Linux 内核中的模块机制:从加载到卸载
linux·嵌入式·系统内核
0vvv03 小时前
删除wsl环境下的Ubuntu系统
linux·运维·ubuntu