背景简介
在实际项目的正式环境中,由于服务器服务运行会产生大量日志文件,但是内存有限,所以就需要人工定时清理文件,但时常会忘记。因此启用linux系统定时任务去执行日志清理功能。
创建shell脚本及执行权限
touch clean.sh //创建脚本文件
cd /**/** //进入该目录
chmod +x clean.sh //修改执行权限
编辑shell脚本
vi clean.sh //编辑执行文件
执行编辑之后,将下段代码复制进去,然后将路径改为自己要删除的文件路径
#!/bin/sh
find /opt/rh/log/ -mtime +0 -name "*.*.log" -exec rm -rf {} \ ;
shell脚本说明:
find:Linux查找命令,用户查找指定条件的文件
/opt/rh/log/:需要进行清理的目标目录
-mtime:标准语句写法
+10 :数字代表天数
-name "*.log.*":目标文件的类型,带有log的所有文件
-exec:固定写法
rm -rf:强制删除包括目录在内的文件
{} \;:固定写法,一对大括号+空格+\+;
也可以对多个路径下的文件进行删除,只需将find一行复制改成相应要删除的路径即可
编写完之后,可以到脚本的当前目录下执行脚本来测试一下
./clean.sh //若在当前目录,则直接执行
./opt/rh/clean.sh //不在当前目录下,执行时加上路径即可
若文件可以被删除,就说明脚本没问题
那么接下来就弄定时任务
首先先说两个命令
crontab -l,查看定时任务
crontab -e,编辑定时任务
使用 crontab -e,编辑定时任务,操作方式和vi编辑器一样
将刚刚的脚本路径添加到编辑器中,并设置时间
0 0 1 * * /home/linux/fingerlink/tomcat/apache-tomcat-7.0.75/logs/clean.sh
分 时 日 月 周 命令
M: 分钟(0-59)。每分钟用*或者 */1表示
H:小时(0-23)。(0表示0点)
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
我设置的是每月1号0点执行。
然后保存退出,然后
使用指令重启crontab 服务,让配置生效
service crond restart
生效后,可以执行crontab -l命令,查看定时任务,到这里Linux定时删除日志就创建完成了。