searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

自动收集Linux系统中内存负载前10的进程脚本

2025-03-13 19:22:26
2
0

脚本功能

  1. 每隔一定时间(例如每分钟)检查系统中内存占用率最高的前10个进程。
  2. 将进程的PID、名称和内存占用率记录到日志文件中。
  3. 可以设置一个阈值,当某个进程的内存占用率超过该阈值时,发送警告信息(可选)。

脚本代码

#!/bin/bash

# 配置参数
LOG_FILE="/var/log/top_memory_usage.log"  # 日志文件路径
INTERVAL=60                              # 检查间隔时间(秒)
THRESHOLD=80                             # 内存占用率阈值(百分比)

# 检查并创建日志文件
if [ ! -f "$LOG_FILE" ]; then
  touch "$LOG_FILE"
fi

# 检查内存占用率并记录
while true; do
  # 获取内存占用率最高的前10个进程信息
  MEMORY_USAGE=$(ps -eo pid,comm,%mem --sort=-%mem | head -n 11 | tail -n 10)
  
  # 记录到日志文件
  echo "$(date +"%Y-%m-%d %H:%M:%S") - Top 10 memory-consuming processes:" >> "$LOG_FILE"
  echo "$MEMORY_USAGE" >> "$LOG_FILE"
  
  # 检查是否超过阈值
  while IFS= read -r line; do
    PID=$(echo "$line" | awk '{print $1}')
    NAME=$(echo "$line" | awk '{print $2}')
    USAGE=$(echo "$line" | awk '{print $3}')
    
    if (( $(echo "$USAGE > $THRESHOLD" | bc -l) )); then
      echo "Warning: Process $NAME (PID: $PID) is using $USAGE% memory, which exceeds the threshold of $THRESHOLD%." | tee -a "$LOG_FILE"
      # 可选:发送警告邮件或通知
      # mail -s "Memory Usage Alert" your_email@example.com <<< "Process $NAME (PID: $PID) is using $USAGE% memory, which exceeds the threshold of $THRESHOLD%."
    fi
  done <<< "$MEMORY_USAGE"
  
  # 等待指定时间
  sleep "$INTERVAL"
done

脚本说明

  1. 日志文件:脚本将监控结果记录到指定的日志文件中。你可以通过查看日志文件来了解系统的内存使用情况。
  2. 检查间隔INTERVAL变量控制脚本检查内存使用情况的时间间隔。默认设置为60秒。
  3. 阈值THRESHOLD变量设置了一个内存占用率的阈值。当某个进程的内存占用率超过该阈值时,脚本会记录警告信息。你可以根据需要调整这个阈值。
  4. 警告通知:当内存占用率超过阈值时,脚本会记录警告信息到日志文件中。你可以选择通过邮件或其他方式发送通知。
0条评论
0 / 1000
王****际
180文章数
2粉丝数
王****际
180 文章 | 2 粉丝
原创

自动收集Linux系统中内存负载前10的进程脚本

2025-03-13 19:22:26
2
0

脚本功能

  1. 每隔一定时间(例如每分钟)检查系统中内存占用率最高的前10个进程。
  2. 将进程的PID、名称和内存占用率记录到日志文件中。
  3. 可以设置一个阈值,当某个进程的内存占用率超过该阈值时,发送警告信息(可选)。

脚本代码

#!/bin/bash

# 配置参数
LOG_FILE="/var/log/top_memory_usage.log"  # 日志文件路径
INTERVAL=60                              # 检查间隔时间(秒)
THRESHOLD=80                             # 内存占用率阈值(百分比)

# 检查并创建日志文件
if [ ! -f "$LOG_FILE" ]; then
  touch "$LOG_FILE"
fi

# 检查内存占用率并记录
while true; do
  # 获取内存占用率最高的前10个进程信息
  MEMORY_USAGE=$(ps -eo pid,comm,%mem --sort=-%mem | head -n 11 | tail -n 10)
  
  # 记录到日志文件
  echo "$(date +"%Y-%m-%d %H:%M:%S") - Top 10 memory-consuming processes:" >> "$LOG_FILE"
  echo "$MEMORY_USAGE" >> "$LOG_FILE"
  
  # 检查是否超过阈值
  while IFS= read -r line; do
    PID=$(echo "$line" | awk '{print $1}')
    NAME=$(echo "$line" | awk '{print $2}')
    USAGE=$(echo "$line" | awk '{print $3}')
    
    if (( $(echo "$USAGE > $THRESHOLD" | bc -l) )); then
      echo "Warning: Process $NAME (PID: $PID) is using $USAGE% memory, which exceeds the threshold of $THRESHOLD%." | tee -a "$LOG_FILE"
      # 可选:发送警告邮件或通知
      # mail -s "Memory Usage Alert" your_email@example.com <<< "Process $NAME (PID: $PID) is using $USAGE% memory, which exceeds the threshold of $THRESHOLD%."
    fi
  done <<< "$MEMORY_USAGE"
  
  # 等待指定时间
  sleep "$INTERVAL"
done

脚本说明

  1. 日志文件:脚本将监控结果记录到指定的日志文件中。你可以通过查看日志文件来了解系统的内存使用情况。
  2. 检查间隔INTERVAL变量控制脚本检查内存使用情况的时间间隔。默认设置为60秒。
  3. 阈值THRESHOLD变量设置了一个内存占用率的阈值。当某个进程的内存占用率超过该阈值时,脚本会记录警告信息。你可以根据需要调整这个阈值。
  4. 警告通知:当内存占用率超过阈值时,脚本会记录警告信息到日志文件中。你可以选择通过邮件或其他方式发送通知。
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0