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

监控Linux操作系统进程使用内存占比的脚本

2025-03-13 19:22:27
0
0

脚本功能

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

脚本代码

#!/bin/bash

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

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

# 检查内存占用率并记录
while true; do
  # 获取内存占用率最高的进程信息
  MEMORY_USAGE=$(ps -eo pid,comm,%mem --sort=-%mem | head -n 2 | tail -n 1)
  PID=$(echo "$MEMORY_USAGE" | awk '{print $1}')
  NAME=$(echo "$MEMORY_USAGE" | awk '{print $2}')
  USAGE=$(echo "$MEMORY_USAGE" | awk '{print $3}')

  # 记录到日志文件
  echo "$(date +"%Y-%m-%d %H:%M:%S") - PID: $PID, Name: $NAME, Memory Usage: $USAGE%" >> "$LOG_FILE"

  # 检查是否超过阈值
  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

  # 等待指定时间
  sleep "$INTERVAL"
done

 

脚本说明

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

监控Linux操作系统进程使用内存占比的脚本

2025-03-13 19:22:27
0
0

脚本功能

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

脚本代码

#!/bin/bash

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

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

# 检查内存占用率并记录
while true; do
  # 获取内存占用率最高的进程信息
  MEMORY_USAGE=$(ps -eo pid,comm,%mem --sort=-%mem | head -n 2 | tail -n 1)
  PID=$(echo "$MEMORY_USAGE" | awk '{print $1}')
  NAME=$(echo "$MEMORY_USAGE" | awk '{print $2}')
  USAGE=$(echo "$MEMORY_USAGE" | awk '{print $3}')

  # 记录到日志文件
  echo "$(date +"%Y-%m-%d %H:%M:%S") - PID: $PID, Name: $NAME, Memory Usage: $USAGE%" >> "$LOG_FILE"

  # 检查是否超过阈值
  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

  # 等待指定时间
  sleep "$INTERVAL"
done

 

脚本说明

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