如操作系统的心跳,运行状况无可逃避:Shell脚本揭示系统鲜活秘密!

简介

Ubuntu 系统保姆监控脚本,全自动化解读系统运行状态!脚本轻量化、资源节约,并且能够定期检测硬盘容量、内存占用和缓存情况。一旦发现缓存占用过高,即刻自动清理缓存,并将结果写入指定目录的日志文件中。日志文件大小限制在10M以内,最多保留7个日志文件。咱就是为了你的Ubuntu系统安宁而设计!

脚本编写

#!/bin/bash

# 设置日志目录
log_dir="/path/to/log/directory"

# 检查日志目录是否存在,不存在则创建
if [ ! -d "$log_dir" ]; then
    mkdir -p "$log_dir"
fi

# 设置日志文件
log_file="$log_dir/system_monitor.log"

# 检查日志文件大小,如果超过10M,则备份并清空
if [ -f "$log_file" ] && [ $(du -m "$log_file" | cut -f1) -gt 10 ]; then
    mv "$log_file" "$log_dir/system_monitor_$(date +'%Y%m%d%H%M%S').log"
fi

# 最多保留7个日志文件
log_count=$(ls -1 "$log_dir" | grep "system_monitor_" | wc -l)
if [ $log_count -gt 7 ]; then
    oldest_log=$(ls -1t "$log_dir" | grep "system_monitor_" | tail -n 1)
    rm "$log_dir/$oldest_log"
fi

# 获取系统运行状态信息
uptime_info=$(uptime)
disk_usage=$(df -h)
memory_usage=$(free -h)
cache_usage=$(sync && echo 3 | tee /proc/sys/vm/drop_caches && free -m | grep -i buffers/cache | awk '{print $3}')

# 将信息写入日志文件
echo "========== $(date +'%Y-%m-%d %H:%M:%S') ==========" >> "$log_file"
echo "Uptime: $uptime_info" >> "$log_file"
echo -e "\nDisk Usage:\n$disk_usage" >> "$log_file"
echo -e "\nMemory Usage:\n$memory_usage" >> "$log_file"
echo -e "\nCache Usage before clearing: $cache_usage MB" >> "$log_file"

# 如果缓存占用过高,清空缓存
if [ $cache_usage -gt 100 ]; then
    sync && echo 3 | tee /proc/sys/vm/drop_caches
    echo -e "\nCache Cleared!" >> "$log_file"
fi

# 获取清空缓存后的缓存占用
cache_usage_after_clear=$(free -m | grep -i buffers/cache | awk '{print $3}')
echo -e "\nCache Usage after clearing: $cache_usage_after_clear MB" >> "$log_file"

echo -e "\n=============================================" >> "$log_file"

# 输出结果到控制台
cat "$log_file"

请替换脚本中的/path/to/log/directory为你想要保存日志的实际目录。这个脚本将监控系统运行状态,记录在日志文件中,并在缓存占用过高时清空缓存。脚本会定期清理日志文件,保留最多7个日志,每个日志文件的大小不超过10M。
运行脚本
如操作系统的心跳,运行状况无可逃避:Shell脚本揭示系统鲜活秘密!_第1张图片

定时任务

crontab -e
0 3 * * 1 /path/to/your/test.sh

这个cron表达式的含义是:
0: 分钟部分,表示每小时的第0分钟。
3: 小时部分,表示每天的第3小时。
*: 日期部分,表示每天。
*: 月份部分,表示每月。
1: 星期部分,表示每周的星期一。
保存并退出编辑器。
这样,脚本将每周的星期一早上3点运行一次。请确保将/path/to/your/test.sh替换为你实际脚本的路径。
如操作系统的心跳,运行状况无可逃避:Shell脚本揭示系统鲜活秘密!_第2张图片

你可能感兴趣的:(linux,运维)