定时自动清理日志文件shell脚本配置

该博客介绍了如何通过shell脚本来实现当服务器磁盘空间占用超过85%时自动清理日志文件,以防止服务异常。脚本会删除日志路径下最近的12个.log文件,并将清理记录写入shell.txt。同时,文章演示了如何配置crontab定时任务每两分钟检查并执行该脚本,确保清理过程的自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每隔一段时间服务器磁盘空间总会被应用输出日志打满,导致应用出现服务异常等问题,故而需要配置自动清理日志文件脚本,配合crond定时任务实现自动化执行。

执行创建文件命令touch shell.sh,并编辑输入以下脚本:

#!/bin/bash
# 日志文件存放路径
logPath=/data/logs
# 截取根目录磁盘的占用率
disk=$(df -h|grep "/$"|awk '{print int($5)}')
if [ $disk -gt 85 ]; then
    for i in `/usr/bin/ls -thr ${logPath} |grep '*.log' |head -12`
    do
     rm -rf ${logPath}/$i
    done;
    echo "成功清理日志文件" >> /data/log/nation/shell.txt
else
    date  >> ${logPath}/shell.txt && echo "磁盘空间占用率小于85%" >> ${logPath}/shell.txt
fi

说明:
1.#!/bin/bash:声明shell命令解析器,否则使用系统默认的
2.以上脚本命令的意思为先获取磁盘空间占用率大小,若大于85,则列出时间倒序的以.log为后缀的前12个文件并遍历删除,并且打印日志到shell.txt文件。

因为是shell脚本,所以需要执行权限:

chmod -R 777 shell.sh

可以自测脚本是否正确:

bash -v shell.sh

接着配置crontab定时任务:

crontab -uroot -e

在最后编辑输入并保存退出(自行研究cron表达式,这里配置每两分钟执行一次):

*/2 * * * * /data/logs/shell.sh >>/data/logs/shell.txt

查看配置的cron定时任务:

crontab -uroot -l

查看shell.txt是否有日志输出(有输出即表明脚本配置生效):

cat shell.txt

假如没有生效,可重启crond服务:

service crond restart

至此,定时自动清理日志文件任务完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值