龙空技术网

Linux应用日志自动清理实现

清风明月eagle 259

前言:

此时大家对“linux系统自动重启日志”大约比较关心,咱们都想要学习一些“linux系统自动重启日志”的相关资讯。那么小编也在网络上汇集了一些对于“linux系统自动重启日志””的相关文章,希望你们能喜欢,看官们快快来了解一下吧!

原创不易,请多多支持!对软件技术感兴趣的童鞋请关注我,后续技术分享更精彩。
背景

前段休假途中突然接到云服务器预警。心中一紧,脑中一片草泥马疾驰而过,看来假期难保(⊙﹏⊙)b。排查后发现罪魁祸首,原来是cat监控日志打满磁盘空间。悬着的心定了下来,假期失而复得^_^。删除历史日志文件,报警解除。

公司小本经营,不比大厂,服务器资源有更多选择。为避免假期被同类问题骚扰,实现shell清理日志脚本,通过crontab定时触发,一劳永逸解决问题。

crontab介绍

crontab是linux系统中的定时任务管理工具,深入了解请自行度娘,这里不再赘述。

通过一个实例看下crontab规则。

0 0 28 * * /data/appdatas/cat/del_cat_log.sh >/data/appdatas/cat/del_cat_log.log 2>&1

从左到右定时规则说明:

-Minute 每个小时的第几分钟执行该任务

-Hour 每天的第几个小时执行该任务

-Day 每月的第几天执行该任务

-Month 每年的第几个月执行该任务

-DayOfWeek 每周的第几天执行该任务

-Command 指定要执行的程序

上面这个命令表示每月28日零点零分执行del_cat_log.sh脚本。

shell删除脚本

清理日志del_cat_log.sh脚本:

#!/bin/bash#--- 1.删除dump目录下日志.cd /data/appdatas/cat/bucket/dump#2个月前目录名。如202001dateTimeDir=`date -d "$(date +%Y%m)01 -2 month" +%Y%m`echo "last 2 month dateTime: $dateTimeDir"#--- 删除匹配202001*的目录文件rm -rf "${dateTimeDir}*"echo "remove dump dir logs winth ${dateTimeDir}*"#--- 2.rm report dir logs.cd /data/appdatas/cat/bucket/reportrm -rf "${dateTimeDir}*"echo "remove dump dir logs winth ${dateTimeDir}*"

cat日志以日期格式按天存储(见下图),脚本按月批量删除。


添加crontab

将del_cat_log.sh添加到crontab。

编辑定时任务

crontab  -e

说明:编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件。

执行上面编辑指令,在文件中添加crontab规则,保存退出。

0 0 28 * * /data/appdatas/cat/del_cat_log.sh >/data/appdatas/cat/del_cat_log.log 2>&1
重启crontab

systemctl start crond //启动服务

systemctl stop crond //关闭服务

systemctl restart crond //重启服务

systemctl reload crond //重新载入配置

注意:修改启动脚本权限 chomd 755 /data/appdatas/cat/del_cat_log.sh

总结

到此,工作全部完成。步骤如下:

编写shell脚本,并赋权添加crontab规则重载crontab配置

可以看到通过Linux+shell组合,很多运维重复工作都可以交给程序解决,节约的时间可以去做更有意义的事情。

标签: #linux系统自动重启日志