前言:
此时大家对“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系统自动重启日志