如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

admin 2025年1月1日11:51:23评论19 views字数 2106阅读7分1秒阅读模式

如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

在 Linux 系统上,长时间运行的高 CPU 和内存消耗进程可能会影响系统性能,甚至导致系统变慢或无响应。为了排查和解决这些问题,系统管理员需要掌握一套全面而高效的检查方法。本篇文章将详细介绍如何在 Linux 系统上检查这些问题,从基本工具到高级分析,涵盖从命令行到脚本自动化的多种方法。

如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

1. 基础工具

1.1 top

top 是一个实时显示系统资源使用情况的工具。以下是使用 top 检查高 CPU 和内存消耗进程的步骤:

  1. 1. 打开终端,输入 top 并按回车键。

  2. 2. 在显示的实时系统资源使用情况中,关注以下字段:

    • • %CPU:显示每个进程的 CPU 使用百分比。

    • • %MEM:显示每个进程的内存使用百分比。

    • • TIME+:显示进程的累计 CPU 时间。

可以通过按以下键对输出进行调整:

  • • P:按 CPU 使用量排序。

  • • M:按内存使用量排序。

  • • q:退出。

示例输出

如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

1.2 htop

htop 是 top 的增强版本,提供更友好的界面和交互功能。

  1. 1. 安装 htop(如果未安装):

sudo apt install htop   # 对于基于 Debian 的系统
sudo yum install htop   # 对于基于 Red Hat 的系统
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?
  1. 2. 运行 htop,可以通过上下箭头快速选择进程。

如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?
  1. 3. 通过按 F6 键自定义排序。

1.3 ps

ps 命令用于显示当前运行的进程信息。

  1. 1. 查找 CPU 使用率最高的进程:

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 10
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?
  1. 2. 查找内存使用率最高的进程:

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 10
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

2. 高级工具

2.1 pidstat

pidstat 是 sysstat 工具包的一部分,用于按进程监控 CPU 和内存使用情况。

  1. 1. 安装 sysstat 工具包:

sudo apt install sysstat
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?
  1. 2. 使用 pidstat 查看特定时间间隔的进程使用情况:

pidstat -u 2 5   # 每 2 秒采样一次,共采样 5 次
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?
  1. 3. 查看内存和 IO 使用情况:

pidstat -r -d 2 5
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

2.2 sar

sar 也是 sysstat 工具包的一部分,可用于分析系统资源的历史使用情况。

  1. 1. 查看历史 CPU 使用情况:

sar -u -f /var/log/sysstat/saXX   # XX 为日期
  1. 2. 查看内存使用情况:

sar -r -f /var/log/sysstat/saXX

2.3 iotop

如果怀疑某些高 CPU 或内存使用的进程还涉及高 IO,可以使用 iotop

  1. 1. 安装 iotop

sudo apt install iotop
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?
  1. 2. 查看实时 IO 使用情况:

sudo iotop
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

3. 日志与历史记录分析

3.1 使用 dmesg

dmesg 用于检查系统内核日志。某些高负载进程可能触发内核警告。

  1. 1. 查看内核日志:

dmesg | tail -n 50
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?
  1. 2. 过滤特定关键词:

dmesg | grep -i "oom"
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

3.2 检查 syslog

系统日志可能包含关于资源密集型进程的记录。

  1. 1. 查看系统日志:

sudo cat /var/log/syslog | grep "high load"
  1. 2. 结合时间戳,定位问题时间段。

4. 自动化与脚本化分析

为了节省时间,可以通过脚本实现自动化分析。

示例脚本:查找高 CPU 和内存进程

以下脚本可每隔一段时间记录高 CPU 和内存使用的进程:

#!/bin/bash
OUTPUT_FILE="high_usage.log"
INTERVAL=5

while truedo
  echo "Timestamp: $(date)" >> $OUTPUT_FILE
  echo "Top CPU Consuming Processes:" >> $OUTPUT_FILE
  ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -n 5 >> $OUTPUT_FILE

  echo "Top Memory Consuming Processes:" >> $OUTPUT_FILE
  ps -eo pid,ppid,cmd,%mem --sort=-%mem | head -n 5 >> $OUTPUT_FILE

  echo "------------------------" >> $OUTPUT_FILE
  sleep $INTERVAL
done

运行此脚本后,日志文件 high_usage.log 将记录高消耗进程。

5. 解决方法

在找到高 CPU 和内存消耗的进程后,可以根据情况选择以下措施:

  1. 1. 结束进程

kill -9 <PID>
  1. 2. 调整进程优先级

renice -n 10 -p <PID>
  1. 3. 分析应用:检查该进程的应用日志或配置,优化资源使用。

如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

大事!运维漫谈-技术交流群对外开放!
扫码可添加小编微信,申请进
如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?
▲长按加群

如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

原文始发于微信公众号(sec0nd安全):如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月1日11:51:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何检查 Linux 上长时间运行的高 CPU 和内存消耗进程?https://cn-sec.com/archives/3573188.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息