当前位置: 首页 > article >正文

如何快速定位高 CPU 使用率的进程

在 Linux 系统中快速定位高 CPU 使用率的进程,可以通过以下步骤和工具实现:

---

### **1. 使用 `top` 命令(实时监控)**
```bash
top
```
- **操作步骤**:
  1. 执行 `top` 进入实时监控界面。
  2. 按键盘 **`P`** 键(大写),按 CPU 使用率从高到低排序。
  3. 观察 `%CPU` 列,找到占用率最高的进程(PID 和命令名称)。

- **输出示例**:
  ```
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  1234 appuser   20   0  2.3g   1.2g   234m S 180.3  6.2   10:23.45 java
  5678 root      20   0  12345   6789   1234 R  95.6  0.5    0:12.34 python
  ```

---

### **2. 使用 `htop`(增强版 `top`,需安装)**
```bash
# 安装 htop(Debian/Ubuntu)
sudo apt install htop

# 安装 htop(CentOS/RHEL)
sudo yum install htop

htop
```
- **优势**:
  - 彩色界面,支持鼠标操作。
  - 直接按 **`F6`** 选择排序字段(如 `PERCENT_CPU`)。
  - 树状视图显示进程层级关系。

---

### **3. 快速列出高 CPU 进程(`ps` + 排序)**
```bash
ps aux --sort=-%cpu | head -n 10
```
- **命令解释**:
  - `ps aux`:列出所有进程的详细信息。
  - `--sort=-%cpu`:按 CPU 使用率降序排序。
  - `head -n 10`:仅显示前 10 个进程。

- **输出示例**:
  ```
  appuser   1234 180.3  6.2 2300000 1.2g ?       Ssl  10:23   10:23 java -Xmx...
  root      5678  95.6  0.5  12345  6789 ?       R    0:12    0:12 python3 app.py
  ```

---

### **4. 使用 `pidstat`(按进程监控 CPU)**
```bash
# 安装 sysstat(包含 pidstat)
sudo apt install sysstat    # Debian/Ubuntu
sudo yum install sysstat    # CentOS/RHEL

# 每 2 秒刷新一次,统计 CPU 使用率
pidstat -u 2
```
- **输出关键列**:
  - `%usr`:用户态 CPU 使用率。
  - `%system`:内核态 CPU 使用率。
  - `PID`:进程 ID。

---

### **5. 通过进程 ID(PID)定位程序**
```bash
# 查看进程详细信息(如启动命令、路径)
ps -p <PID> -o pid,ppid,cmd,%cpu,%mem --forest

# 查看进程对应的可执行文件路径
ls -l /proc/<PID>/exe

# 查看进程的工作目录
ls -l /proc/<PID>/cwd
```

---

### **6. 进阶工具(针对复杂场景)**
#### **`perf`(性能分析工具)**
```bash
# 安装 perf
sudo apt install linux-tools-common    # Debian/Ubuntu
sudo yum install perf                 # CentOS/RHEL

# 统计 CPU 使用率最高的函数调用
sudo perf top
```

#### **`atop`(历史记录分析)**
```bash
# 安装 atop
sudo apt install atop    # Debian/Ubuntu
sudo yum install atop    # CentOS/RHEL

# 查看历史高 CPU 记录
atop -r /var/log/atop/atop_YYYYMMDD
```

---

### **7. 自动化脚本示例**
```bash
#!/bin/bash
# 找出 CPU 使用率超过 50% 的进程
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | awk '$4 > 50 {print}'
```

---

### **总结**
1. **快速定位**:优先使用 `top` 或 `htop` 实时查看并按 CPU 排序。
2. **精确分析**:通过 `ps --sort` 或 `pidstat` 过滤数据。
3. **深度排查**:结合 `perf` 或 `atop` 分析代码级性能问题。
4. **后续处理**:
   - **终止进程**:`kill -9 <PID>`(谨慎使用)。
   - **优化代码**:针对高 CPU 进程进行性能调优。
   - **限制资源**:使用 `cgroups` 或 `systemd` 限制进程 CPU 配额。


http://www.kler.cn/a/596350.html

相关文章:

  • git_version_control_proper_practice
  • Linux:基础IO---文件描述符
  • cmakelist中添加opencv
  • 【风信】邮件系统的介绍和使用。
  • Stable Diffusion lora训练(一)
  • 如何防御大模型中的 Prompt 攻击?
  • [蓝桥杯 2023 省 B] 子串简写
  • 深入理解 Spring 框架中的 IOC 容器
  • 六种开源智能体通信协议对比:MCP、ANP、Agora、agents.json、LMOS、AITP
  • 第十六届蓝桥杯模拟二
  • C++面试准备一(常考)
  • JVM垃圾回收笔记01
  • 冒排排序相关
  • 2025年03月10日人慧前端面试(外包滴滴)
  • vue实现图形验证码
  • 过滤器的执行顺序
  • Go语言常用框架及工具介绍
  • 汽车免拆诊断案例 | 2024 款路虎发现运动版车无法正常识别智能钥匙
  • 八股Spring
  • 适合用户快速开发项目的PHP框架有哪些?