Linux中定时删除指定日期和天数的log日志文件

不管是测试环境还是正式环境,由于我们运行的服务往往会产生大量的日志文件,如果忘记清理,容易造成磁盘空间不足,因此最好是利用 linux 自带的定时任务功能去定时清理日志.

1.创建 shell脚本,赋权限

vim clean_tomcatlog.sh
chmod +x clean_tomcatlog.sh

2.编写脚本(可以对多个路径下的文件进行删除,只需将find一行复制改成相应要删除的路径即可)

find /data/jinhua/apache-tomcat-8.5.51/logs/gm-uums/ -mtime +0 -name "*.log.*" -exec rm -rf {} \;
find /data/jinhua/apache-tomcat-8.5.51/logs/gm-uums/ -mtime +0 -name "*.log" -exec rm -rf {} \;

shell脚本说明:

find:Linux查找命令,用户查找指定条件的文件

/opt/rh/log/:需要进行清理的目标目录

-mtime:+10 :数字代表天数

-name "*.log.*":目标文件的类型,带有log的所有文件

-exec:固定写法

rm -rf:强制删除包括目录在内的文件

{} \;:固定写法,一对大括号+空格+\+;
 

重点说说mtime参数:
-mtime n 按照文件的更改时间来找文件,n为整数。

n 表示文件更改时间距离为n天
-n 表示文件更改时间距离在n天以内
+n 表示文件更改时间距离在n天以前
例:

-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件

3.测试脚本

./clean_tomcatlog.sh

若文件可以被删除,就说明脚本没问题

4.定时器

 查看定时器

crontab -l

编辑定时器

crontab -e

5.编辑定时任务(我设置的是每月1号0点执行)

0  0  1  *  * /data/jinhua/shell/clean_tomcatlog.sh
分 时 日 月  周
  1. M: 分钟(0-59)。每分钟用*或者 */1表示

  2. H:小时(0-23)。(0表示0点)

  3. D:天(1-31)。

  4. m: 月(1-12)。

  5. d: 一星期内的天(0~6,0为星期天)    

6.重启crontab 服务

service crond restart

7.查询定时任务

crontab -l

即可看到刚创建的定时任务,至此搞定!

你可能感兴趣的:(linux,运维,服务器)