如何监控定期清理CentOS 7.6系统无用文件任务的执行情况?
美国、香港服务器
如何监控定期清理CentOS 7.6系统无用文件任务的执行情况?
09-22 来源:
要监控 CentOS 7.6 中定期清理无用文件任务的执行情况,可通过日志记录、执行结果检查和告警机制实现全流程跟踪,确保清理任务正常运行且无异常操作。以下是具体方法:
一、通过日志记录监控清理细节
在清理脚本中添加详细日志输出,记录清理时间、操作内容、成功 / 失败状态,便于事后追溯。
1. 完善清理脚本的日志功能
修改之前的清理脚本(如 /usr/local/bin/system_cleanup.sh),增加更详细的日志记录(包括清理的文件数量、大小、错误信息等):
bash
#!/bin/bash
LOG_FILE="/var/log/system_cleanup.log"
# 记录开始时间和磁盘空间初始状态
echo "===== 清理任务开始:$(date) =====" >> $LOG_FILE
df -h >> $LOG_FILE # 记录清理前的磁盘空间
# 1. 清理 yum 缓存
echo "--- 清理 yum 缓存 ---" >> $LOG_FILE
yum clean packages >> $LOG_FILE 2>&1
if [ $? -eq 0 ]; then
echo "yum 缓存清理成功" >> $LOG_FILE
else
echo "yum 缓存清理失败" >> $LOG_FILE
fi
# 2. 清理临时文件(记录删除的文件数量)
echo "--- 清理 /tmp 旧文件 ---" >> $LOG_FILE
tmp_count=$(find /tmp -type f -mtime +7 -delete -print | wc -l)
echo "删除 /tmp 下 $tmp_count 个旧文件" >> $LOG_FILE
echo "--- 清理 /var/tmp 旧文件 ---" >> $LOG_FILE
vartmp_count=$(find /var/tmp -type f -mtime +7 -delete -print | wc -l)
echo "删除 /var/tmp 下 $vartmp_count 个旧文件" >> $LOG_FILE
# 3. 清理旧日志(记录删除的文件数量)
echo "--- 清理旧日志文件 ---" >> $LOG_FILE
log_count=$(find /var/log -type f \( -name "*.log-*" -o -name "*.log.*" -o -name "*.gz" \) -mtime +30 -delete -print | wc -l)
echo "删除 $log_count 个旧日志文件" >> $LOG_FILE
# 4. 记录清理后的磁盘空间
echo "--- 清理后磁盘空间 ---" >> $LOG_FILE
df -h >> $LOG_FILE
echo "===== 清理任务结束:$(date) =====" >> $LOG_FILE
echo "" >> $LOG_FILE
关键改进:增加 $? 判断操作是否成功、用 wc -l 统计删除文件数量、记录清理前后的磁盘空间(便于对比释放效果)。
2. 定期查看清理日志
通过日志确认任务是否执行、是否有错误:
bash
# 查看最近一次清理记录
tail -n 50 /var/log/system_cleanup.log
# 搜索包含“失败”的记录(检查错误)
grep "失败" /var/log/system_cleanup.log
# 查看历史清理的文件数量(评估清理效果)
grep "删除" /var/log/system_cleanup.log
二、检查定时任务(crontab)的执行状态
确认 crond 服务是否正常运行,以及定时任务是否按计划执行。
1. 检查 crond 服务状态
bash
# 查看 crond 服务是否运行
systemctl status crond
# 若未运行,启动并设置开机自启
systemctl start crond
systemctl enable crond
2. 查看 crontab 任务执行记录
crond 的执行日志默认记录在 /var/log/cron 中,可通过该日志确认任务是否触发:
bash
# 搜索清理脚本的执行记录(例如脚本名为 system_cleanup.sh)
grep "system_cleanup.sh" /var/log/cron
若输出类似 Sep 22 03:00:01 localhost CROND[12345]: (root) CMD (/usr/local/bin/system_cleanup.sh),说明任务已按计划执行。
三、设置执行结果告警(主动通知)
通过邮件或脚本判断,当清理任务失败或异常时主动发送告警,及时发现问题。
1. 配置邮件告警(需安装邮件服务)
(1)安装并配置邮件服务
bash
# 安装 postfix 邮件服务和 mailx 客户端
yum install -y postfix mailx
systemctl start postfix
systemctl enable postfix
# 配置默认发件人(编辑 /etc/mail.rc,添加以下内容)
echo "set from=your-email@example.com" >> /etc/mail.rc # 替换为你的邮箱
echo "set smtp=smtp.example.com" >> /etc/mail.rc # 替换为邮箱的 SMTP 服务器
echo "set smtp-auth-user=your-email@example.com" >> /etc/mail.rc
echo "set smtp-auth-password=your-password" >> /etc/mail.rc # 邮箱密码或授权码
echo "set smtp-auth=login" >> /etc/mail.rc
(2)在清理脚本中添加告警逻辑
修改脚本,当任务执行失败时发送邮件:
bash
#!/bin/bash
LOG_FILE="/var/log/system_cleanup.log"
ALERT_EMAIL="admin@example.com" # 接收告警的邮箱
echo "===== 清理任务开始:$(date) =====" >> $LOG_FILE
# 执行清理操作(以清理 yum 缓存为例,其他操作类似)
yum clean packages >> $LOG_FILE 2>&1
if [ $? -ne 0 ]; then
echo "yum 缓存清理失败" >> $LOG_FILE
echo "系统清理任务失败,请查看日志:$LOG_FILE" | mail -s "CentOS 清理任务告警" $ALERT_EMAIL
exit 1 # 遇到错误时退出脚本
fi
# 其他清理步骤...
echo "===== 清理任务结束:$(date) =====" >> $LOG_FILE
2. 监控磁盘空间变化(验证清理效果)
通过对比清理前后的磁盘空间,确认清理任务是否有效释放了空间:
bash
# 查看清理日志中记录的磁盘空间变化
grep -A 10 "清理前的磁盘空间" /var/log/system_cleanup.log
grep -A 10 "清理后磁盘空间" /var/log/system_cleanup.log
若多次清理后磁盘空间未明显减少,可能是清理规则需调整(如增加清理范围)。
四、使用监控工具(适合企业级场景)
若需更专业的监控,可集成开源工具(如 Prometheus + Grafana)或系统自带工具:
1. 用 monit 监控任务执行
monit 是轻量级监控工具,可配置监控脚本执行状态:
bash
# 安装 monit
yum install -y monit
# 配置监控规则(编辑 /etc/monit.d/cleanup.conf)
cat << EOF > /etc/monit.d/cleanup.conf
check process system_cleanup with pidfile /var/run/system_cleanup.pid
start program = "/usr/local/bin/system_cleanup.sh"
if does not exist for 2 cycles then alert # 连续2次未执行则告警
EOF
# 启动 monit 并设置开机自启
systemctl start monit
systemctl enable monit
2. 用 Prometheus 监控磁盘空间
通过 Prometheus 采集磁盘空间指标,结合 Grafana 可视化,当空间占用超过阈值时告警(需额外部署,适合多服务器场景)。
总结
监控定期清理任务的核心方法:
日志记录:在脚本中详细记录清理内容、时间、结果,通过 tail 或 grep 查看;
任务检查:通过 /var/log/cron 确认定时任务是否触发,systemctl status crond 检查服务状态;
主动告警:配置邮件通知,当任务失败时及时提醒;
效果验证:对比清理前后的磁盘空间,确认清理有效。
通过以上措施,可全面监控清理任务的执行状态,确保其稳定运行并达到释放空间的目的。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快