一、为什么要定时清理log文件?
实际工作中,我们部署到服务器的应用可能随时在写入日志,有的应用一天产生的日志就较大,但是磁盘空间有限,所以磁盘常常很快就处于用完状态,并由此产生一些问题,比如服务器上应用可能挂掉,影响生产。
二、如何清理log文件?
估摸着时间就去看看磁盘删删log文件??显然不科学,,这里记录一个高效的方法:编写Linux定时任务脚本,自动清理log日志文件。
1、创建shell脚本文件并赋予执行权限:
[root@aigoV_66 ~]# touch auto_del_sjjk_log.sh //创建shell文件
[root@aigoV_66 ~]# chmod +x auto_del_sjjk_log.sh //赋予文件执行权限
关于 chmod +x 命令 :
Linux下不同的文件类型,其文件名有不同的颜色:
蓝色表示目录,绿色表示可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其它文件。
新建的shell文件只是一个灰色的普通文件。
执行 chmod +x 命令,此时文件变成了绿色,有了可执行权限。
若再使用 chmod -x 命令,就去除了执行权限。
2、编辑刚创建的shell脚本文件,写入删除命令:
[root@aigoV_66 ~]# vi auto_del_sjjk_log.sh
#!/bin/sh
find git_workspace/xny/数据接口/target/log/ -mtime +2 -name "*.log" -exec rm -rf {} \;
~
~
~
-- INSERT --
关于上面命令:
vi xx.sh :
编辑xx.sh 脚本文件。
进入编辑区后,按i键开始编辑,编辑完按Esc键,然后键入冒号:,再输入wq,回车保存退出。
删除命令部分:
find 查找命令,查找指定文件。
git_workspace/xny/数据接口/target/log/ 需要清理的文件的目录位置。
-mtime 标准语句写法
+2 数字指代天数,即删除2天以前的 -name "*.log.*" -exec rm -rf {} \;
-name "*.log" 目标文件类型
-exec 固定写法
rm -rf 强制删除包括目录在内的文件
例: rm -rf abc 将 abc 子目录及子目录中所有档案删除,并且不用确认 :
{} \; 固定写法
3、将上面shell文件添加到Linux定时任务脚本
[root@aigoV_66 ~]# crontab -e //进入定时任务编辑页面(编辑保存方法同上)
0 23 * * * /root/syncsystemtime.sh
05 01 * * * sh /root/project/rm.sh
0 01 * * * /root/auto_del_sjjk_log.sh //每日凌晨一点执行该删除日志的脚本文件
~
~
~
~
~
"/tmp/crontab.zvmT2t" 3L, 106C
进过上面一番操作后,服务器会在每日凌晨一点自动执行清理日志的操作。