首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过shell脚本自动清理超过指定大小的文件

通过shell脚本自动清理超过指定大小的文件

作者头像
洗尽了浮华
发布2018-10-11 16:02:49
3.1K0
发布2018-10-11 16:02:49
举报
文章被收录于专栏:散尽浮华散尽浮华

由于线上业务用的squid,根据经验值如果长时间运行则缓存目录下的swap.state会慢慢变大,一旦超过60M,squid的性能就会急剧下降,因此需要定时去清理大于60M的swap.state文件。由此引出需求,查找cache目录下的所有大于60M的swap.state文件并清除,即: 1)查找cache目录下的所有swap.state文件 2)判断是否大于60M 3)大于60M则清空

缓存目录为/data/cache,针对以上需求,做法如下:

[root@CRN-JZ-2-36X ~]# du -sh /data/cache/coss/squid*/swap.state 
2.7M /data/cache/coss/squid1/swap.state
270k /data/cache/coss/squid2/swap.state
2.7M /data/cache/coss/squid3/swap.state
2.7M /data/cache/coss/squid4/swap.state
53M /data/cache/coss/squid5/swap.state
35M /data/cache/coss/squid6/swap.state
5.6M /data/cache/coss/squid7/swap.state
4.6M /data/cache/coss/squid8/swap.state
97M /data/cache/coss/squid9/swap.state
75M /data/cache/coss/squid10/swap.state
74M /data/cache/coss/squid11/swap.state

解题思路:
使用du -sh 查找大于swap.state的大小,同时使用awk 过滤第一个字段,接着为了过滤掉M、只保留数字,再次使用awk 制定"M"
作为分界符过滤出文件大小。
[root@CRN-JZ-2-36X ~]# du -sh /data/cache/coss/squid*/swap.state | awk '{ print $1 }'   | awk -F"M" '{ print $1 }' 
2.7
270k 
2.7
2.7
53
35
5.6
4.6
97
75
74

以上做法可以看出du -sh这种方案的缺点:
du -sh 的输入会自动转换单位,比如K、M、G,只过滤M会导致部分文件大小无法正常获取,例如第二个的270k。同时使用了多个管道
较为繁琐,且管道过滤之后的只有文件大小,相对应的文件名丢失,后续的处理较麻烦,当然也可以使用数组等解决,因此放弃此方案。

更好的方法:
不要使用带单位的输出,直接使用ls -l 的输出就可以作为相应的数据源。ls -l输出的结果以字节为单位,简单,容易处理。

不过需要同时考虑到第一个方案的缺点,因此加了两个临时变量去存储相应的文件名、文件大小。

最终的方案:
[root@CRN-JZ-2-36X ~]# vim /root/cache_gt_60.sh
#!/bin/bash
for i in $(ls -l /data/cache/coss/squid*/swap.state)
do
   size=`echo $i | awk '{ print $5 }'`
   file=`echo $i | awk '{ print $9 }'`

   if [ $size -gt 61865984 ] ; then 
      echo $file; echo $size
      echo >$file
   fi
done

温馨提示:
61865984 字节换成成M单位为60M,这里判断是否大于60M,大于则使用echo 语句将对应文件置空。

总结:采用du -sh这种带自动单位换成的命令去处理,麻烦多多,有时候还是简单的使用"ls -l"比较好。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档