脚本要求:两类机器一共300多台,写个脚本自动清理这两类机器里面的日志文件。

要求:两类机器一共300多台,写个脚本自动清理这两类机器里面的日志文件。在堡垒机批量发布,也要批量发布到crontab里面。node

A类机器日志存放路径很统一,B类机器日志存放路径须要用*匹配(由于这个目录里除了日志外,还有其余文件,不能删除。匹配的时候可用*.log)shell

A类:/opt/cloud/log/   删除7天前的
B类: /opt/cloud/instances/  删除15天前的bash

要求写在一个脚本里面。不用考虑堡垒机上的操做,只须要写出shell脚本。ide



#!/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

解析:spa

-d filename 若是 filename为目录,则为真 [ -d /opt/cloud/log/ ]日志


find  【路径】-name filename :表示直接查找该文件名的文件。crontab


find 【路径】 -type filetype:表示经过文件类型查找文件。
文件类型包括:
          f:普通文件
          b:块设备文件
          c:字符设备文件
          d:目录
          l:连接文档
          s:套接字文件文档


find 【路径】【参数】it

-atime  +n/-n   :表示访问或执行的时间大于或小于n天的文件。
-ctime  +n/-n   :表示写入,更改inode属性(如更改全部者、权限或者连接)的时间大于或小于n天的文件。
-mtime  +n/-n   :表示写入时间大于或小于n天的文件,该参数用的最多。
-mmin   +n/-n   :表示mtime在n分钟内的文件。
-o   :或者的意思 orclass


xargs 是一个强有力的命令,它可以捕获一个命令的输出,而后传递给另一个命令

当你尝试用rm 删除太多的文件,你可能获得一个错误信息:/bin/rm Argument list too long. 用xargs 去避免这个问题

find ~ -name ‘*.log’ -print0 | xargs  rm -f

相关文章
相关标签/搜索