shell脚本-------------定期清理日志文件

目标需求:

两类机器一共300多台,写个脚本自动清理这两类机器里的日志文件,A类和B类机器日志存放路劲一致,但B类机器日志文件存放路径需要用匹配(除了日志还有其他文件,不能删,匹配的时候用.log)

A类:/opt/cloud/log/ (删除7天前日志)
B类:/opt/cloud/instances/ (删除15天前日志)

不用考虑堡垒机上操作,只要写shell脚本就可以。

步骤分析:

  1. 需要写出一个,无论在A类还是B类的机器都能运行。
  2. 判断是A类还是B类机器,可以用判断目录 /opt/cloud/log 或 /opt/cloud/instances 目录的存在来确定哪类机器。
  3. 对于A类机器直接find即可,而B类机器需要find -name “*.log”稍微繁琐。
  4. 把日志文件找到后,传递给rm删除。
#!/bin/bash
dir1=/opt/cloud/instances/
dir2=/opt/cloud/log/
if [ -d $dir1 ]
then
      find $dir1 -type f -name "*.log" -mtime +15 |xargs rm -f
      elif [ -d $dir2 ]
      then
           find $dir2 -type f -mtime +7 |xargs rm -f
fi

注释:

#####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 小时)之内的文件。

####xargs####
xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

  • xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中获取数据。
  • xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
  • xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另一个命令。

之所以能用到这个命令,关键是由于很多命令不支持“|”管道来传输参数,而日常工作中有,所以就有了xargs命令,
例如:
find /sbin -perm +700 |ls -l ##这个命令是错的
find /sbin -perm +700 |xargs ls -l ##这个命令才是正确的

猜你喜欢

转载自blog.csdn.net/weixin_48190875/article/details/108240289