Shell脚本自动清理不同类机器里的日志文件


shell需求:
现有两类机器共300多台,写个脚本自动清理这两类机器里面的日志文件,在堡垒机上发布,也要批量发布到crontab里。
A类机器的日志存放路径很同意,B类机器日志文件存放则需要匹配,因为存放日志文件的目录里除了日志文件,还有其他文件是不能删除的。
不用考虑堡垒机上的操作,只写shell脚本即可。

A类机器日志存放目录:/opt/cloud/log/ (删除7天前日志)
B类机器日志存放目录:/opt/cloud/instances/ (删除15天前日志)



shell分析:
1.需要写出一个通用的脚本,该脚本在A、B两类机器上都可以运行。
2.判断是A类机器还是B类机器,可以通过存放日志文件的目录来确定是哪类机器,从而执行相应的操作。
3.根据需求,A类机器直接find查找即可,B类机器则需要find -name “*.log”将日志文件筛选出来进行操作,而其他文件则不动。
4.根据需求,find查找对应天数之前的参数
5.找到对应的日志文件后传递给rm删除,还要加上xargs命令。


find [路径] -name filename 直接查找该文件名的文件

find [路径] -type filetype 通过文件类型查找文件
文件类型:
-f 普通文件
-b 块设备文件
-c 字符设备文件
-d 目录
-l 链接文档
-s 套接字文件


find -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 是给命令传递从参数的一个过滤器,也是组合多个命令的一个工具。
1.xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
2.xargs 可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
3.xargs 默认的命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,但通过xargs的处理,换行和空白将被空格取代。

xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。之所以能用到这个命令,关键是由于很多命令不支持管道来传递参数,而日常工作中又有这个必要,于是便有了xargs命令。
例:
find /sbin -perm +700 | ls -l (错误命令)
find /sbin -perm +700 | xargs ls -l (正确命令)



脚本代码:

#!/bin/bash
A=/opt/cloud/log/
B=/opt/cloud/instances/

if [ -d $A ]
then
find $A -type f -name -mtime +7 |xargs rm -f

elif [-d $B ]
then
find $B -type f -name “*.log” -mtime +15 |xargs rm -f
fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值