Linux下面自动清理超过指定大小的文件

思路:

1)查找test目录下的所有的文件

2)判断是否大于100M

3)大于100M则清空

以byte为单位显示文件大小,然后和100M大小做对比. 100M换算成字节为104857600这里判断是否大于等于100M,大于则使用echo语句将对应文件置空。

100M=100*1024*1024=104857600byte

可以使用dd命令创建一些大于和小于100M的文件进行测试

[root@Python test]# dd if=/dev/zero of=/test/sdsds bs=1M count=20

记录了20+0 的读入

记录了20+0 的写出

20971520字节(21 MB)已复制,0.0141979 秒,1.5 GB/秒

[root@Python test]# du -sh ./*

35M./123

110M./12sds

215M./12ssdsds

5.7M./jumpserver-master.zip

148K./lnmp1.5.tar.gz

64M./nextcloud-14.0.1.zip

20M./Python-3.5.2.tgz

20M./sdsds

[root@Python test]# du -sh -b ./*

36700160./123

115343360./12sds

225443840./12ssdsds

5931629./jumpserver-master.zip

149588./lnmp1.5.tar.gz

66439148./nextcloud-14.0.1.zip

20566643./Python-3.5.2.tgz

20971520./sdsds

[root@Python test]# ls -l ./*

-rw-r--r-- 1 root root 36700160 10月 18 11:58 ./123

-rw-r--r-- 1 root root 115343360 10月 18 11:58 ./12sds

-rw-r--r-- 1 root root 225443840 10月 18 11:59 ./12ssdsds

-rw-r--r-- 1 root root 5931629 10月 18 12:05 ./jumpserver-master.zip

-rw-r--r-- 1 root root 149588 10月 18 12:03 ./lnmp1.5.tar.gz

-rw-r--r-- 1 root root 66439148 10月 18 12:02 ./nextcloud-14.0.1.zip

-rw-r--r-- 1 root root 20566643 10月 18 12:01 ./Python-3.5.2.tgz

-rw-r--r-- 1 root root 20971520 10月 18 11:59 ./sdsds

注意:

如果文件是带小数点的M单位,比如文件大小为5.7M,则换算成byte单位时,就不能直接使用5.7*1024*1024=5976883.2这样计算了,因为这个5.7M的大小是估算出来的M单位的大小,不是精确到的. 如果直接加-b参数换算成byte单位大小则就是精确的值了,也可以使用-k参数来进行换算,如下:

[root@Python test]# du -sh jumpserver-master.zip

5.7Mjumpserver-master.zip

[root@Python test]# du -sh -b jumpserver-master.zip

5931629jumpserver-master.zip

[root@Python test]# du -sh -k jumpserver-master.zip

5796jumpserver-master.zip

方法一: 使用"du -sh -b"或"du -sh -k"来计算文件大小

语法

# du [-abcDhHklmsSx][-L ][-X ][--block-size][--exclude=][--max-depth=][--help][--version][目录或文件]

参数说明:

-a或-all 显示目录中个别文件的大小。

-b或-bytes 显示目录或文件大小时,以byte为单位。

-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。

-D或--dereference-args 显示指定符号连接的源文件大小。

-h或--human-readable 以K,M,G为单位,提高信息的可读性。

-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。

-k或--kilobytes 以1024 bytes为单位。

-l或--count-links 重复计算硬件连接的文件。

-L或--dereference 显示选项中所指定符号连接的源文件大小。

-m或--megabytes 以1MB为单位。

-s或--summarize 仅显示总计。

-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。

-x或--one-file-xystem 一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。

-X或--exclude-from= 指定目录或文件。

--exclude= 略过指定的目录或文件。

--max-depth= 超过指定层数的目录后,予以忽略。

--help 显示帮助。

--version 显示版本信息。

[root@Python test]# du -sh *

35M123

110M12sds

215M12ssdsds

5.7Mjumpserver-master.zip

148Klnmp1.5.tar.gz

64Mnextcloud-14.0.1.zip

20MPython-3.5.2.tgz

20Msdsds

[root@Python test]# du -sh -b *

36700160123

11534336012sds

22544384012ssdsds

5931629jumpserver-master.zip

149588lnmp1.5.tar.gz

66439148nextcloud-14.0.1.zip

20566643Python-3.5.2.tgz

20971520sdsds

使用du -sh -b查找出相应文件的大小,同时使用awk 过滤第一个字段,只保留数字

[root@Python test]# du -sh -b * | awk '{ print $1 }'

36700160

115343360

225443840

5931629

149588

66439148

20566643

20971520

[root@Python test]# du -sh -b * | awk '{ print $2 }'

123

12sds

12ssdsds

jumpserver-master.zip

lnmp1.5.tar.gz

nextcloud-14.0.1.zip

Python-3.5.2.tgz

sdsds

批量处理的脚本

#!/bin/bash

#Author:Mr.Ding

#Created Time:2018-10-18 10:32:24

#Name:/root/cache_gt_60.sh

#Description:清理/test目录下大于或等于100MB的文件;

for size in $(du -sh -b /test/* | awk '{ print $1 }')

do

for file in $(du -sh -b /test/* |grep ${size}|awk '{print $2}')

do

if [ ${size} -ge 104857600 ];then

echo ${file} ${size}

echo "" > ${file}

fi

done

done

结合crontab进行定时执行

[root@Python shell]# crontab -l

0 0 * * 6 /bin/bash -x /root/scripts/shell/cache_ge_100.sh

执行脚本后结果如下:

[root@Python test]# du -sh *

35M 123

4.0K 12sds

4.0K 12ssdsds

5.7M jumpserver-master.zip

148K lnmp1.5.tar.gz

64M nextcloud-14.0.1.zip

20M Python-3.5.2.tgz

20M sdsds

方法二:使用"ls -l"

ls命令是linux下用来列出目录下的文件. 下面是关于ls的一些常规用法:

ls -a 列出文件下所有的文件,包括以“.“开头的隐藏文件(linux下文件隐藏文件是以.开头的,如果存在..代表存在着父目录)。

ls -l 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。

ls -F 在每一个文件的末尾加上一个字符说明该文件的类型。"@"表示符号链接、"|"表示FIFOS、"/"表示目录、"="表示套接字。

ls -s 在每个文件的后面打印出文件的大小。 size(大小)

ls -t 按时间进行文件的排序 Time(时间)

ls -A 列出除了"."和".."以外的文件。

ls -R 将目录下所有的子目录的文件都列出来,相当于我们编程中的“递归”实现

ls -L 列出文件的链接名。Link(链接)

ls -S 以文件的大小进行排序

ls可以结合管道符”|“来进行一下复杂的操作。比如: ls | less用于实现文件列表的分页

[root@Python test]# ls -l

总用量 464692

-rw-r--r-- 1 root root 36700160 10月 18 11:58 123

-rw-r--r-- 1 root root 1 10月 18 15:01 12sds

-rw-r--r-- 1 root root 1 10月 18 15:01 12ssdsds

-rw-r--r-- 1 root root 104857600 10月 18 15:12 dcml

-rw-r--r-- 1 root root 115343360 10月 18 15:12 dcscdxa

-rw-r--r-- 1 root root 104857600 10月 18 15:12 dcvbn

-rw-r--r-- 1 root root 5931629 10月 18 12:05 jumpserver-master.zip

-rw-r--r-- 1 root root 149588 10月 18 12:03 lnmp1.5.tar.gz

-rw-r--r-- 1 root root 66439148 10月 18 12:02 nextcloud-14.0.1.zip

-rw-r--r-- 1 root root 20566643 10月 18 12:01 Python-3.5.2.tgz

-rw-r--r-- 1 root root 20971520 10月 18 11:59 sdsds

[root@Python test]# ls -l * | awk '{print $5}'

36700160

1

1

104857600

115343360

104857600

5931629

149588

66439148

20566643

20971520

批量处理的脚本

#!/bin/bash

#Author:Mr.Ding

#Created Time:2018-10-18 15:14:20

#Name:/root/scripts/shell/cache_ge_100_1.sh

#Description:批量清理大于或等于100M的文件.

for size in $(ls -l /test/* |awk '{print $5}')

do

for file in $(ls -l /test/*|grep $size |awk '{print $9}')

do

if [ ${size} -ge 104857600 ];then

echo ${file} ${size}

echo "" > ${file}

fi

done

done

[root@Python test]# chmod 755 /root/scripts/shell/cache_ge_100_1.sh

加入计划任务同上

执行结果如下:

[root@Python test]# du -sh *

35M 123

4.0K 12sds

4.0K 12ssdsds

4.0K dcml

4.0K dcscdxa

4.0K dcvbn

5.7M jumpserver-master.zip

148K lnmp1.5.tar.gz

64M nextcloud-14.0.1.zip

20M Python-3.5.2.tgz

20M sdsds

linux自动清除超出的文件,Linux下面自动清理超过指定大小的文件相关推荐

  1. linux如何删除指定大小以下的文件夹,Linux中定时删除超过指定大小的文件夹

    背景: 开发环境总是动不动就没有空间了, 大部分都是debug日志.所以有必要在日志很疯狂的时候,删除不必要的日志. 思路:一. 书写删除日志文件脚本: 定时任务执行.  但是有时候的日志是需要保存用 ...

  2. linux如何批量清理文件大小,Linux下自动清理超过指定大小文件的方法

    由于线上业务用的squid,根据经验值如果长时间运行则缓存目录下的swap.state会慢慢变大,一旦超过60M,squid的性能就会急剧下降,因此需要定时去清理大于60M的swap.state文件. ...

  3. linux 文件大小 自动变化 写,Linux下自动清理超过指定大小文件的方法

    由于线上业务用的squid,根据经验值如果长时间运行则缓存目录下的swap.state会慢慢变大,一旦超过60M,squid的性能就会急剧下降,因此需要定时去清理大于60M的swap.state文件. ...

  4. linux删除指定大小的文件,Linux下删除空文件,删除指定大小的文件

    Linux下批量删除空文件(大小等于0的文件)的方法: find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还可以删除指 ...

  5. 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件

    过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size +1G| xargs rm 在清理系统日志文件 ...

  6. linux为用户指定资源大小,Linux_Linux系统下生成一个指定大小的文件,在装系统,因此在这里随便记 - phpStudy...

    Linux系统下生成一个指定大小的文件 在装系统,因此在这里随便记点东西. 从前与经理讨论NVR项目的时候,他提到要预先将用户指定好的磁盘空间预留出来,这是比较容易实现的功能.不容易实现的是自己写一个 ...

  7. linux文件下生成一个文件,Linux系统下生成一个指定大小的文件要注意什么?

    在装系统,因此在这里随便记点东西. 从前与经理讨论NVR项目的时候,他提到要预先将用户指定好的磁盘空间预留出来,这是比较容易实现的功能.不容易实现的是自己写一个文件系统,这种方法我是不太敢照量啊,不过 ...

  8. Linux 磁盘管理-配额管理-配置用户对磁盘进行指定大小或者文件数量的使用权限

    一.磁盘配额 1.磁盘配额概念 配置用户对磁盘进行指定大小或者文件数量的使用权限. 1)用户配额和组配额 2)磁盘容量限制和文件个数限制 3)软限制和硬限制 4)宽限时间 如果用户的空间占用数处于软限 ...

  9. Atitit.论垃圾文件的识别与清理 文档类型垃圾文件 与api概要设计pa6.doc

    Atitit.论垃圾文件的识别与清理 文档类型垃圾文件 与api概要设计pa6.doc 1. 俩个问题::识别垃圾文件与清理策略1 1.1. 文件类型:pic,doc,v,m cc,isho pose ...

  10. php使用curl下载指定大小的文件

    php中使用基于libcurl的curl函数,可以对目标url发起http请求并获取返回的响应内容.通常的请求方式类似如下的代码: public function callFunction($url, ...

最新文章

  1. python polar函数_Python可视化很简单,可是你会吗?python绘制饼图、极线图和气泡图,让我来教教你吧,一文教会!!!...
  2. python文件读写小结
  3. Fedora 18在ASUS N6系列电脑上以太网卡驱动的安装
  4. 【LINUX系列】之字符串搜索命令
  5. 2009年最受欢迎jQuery插件
  6. 站在过去的肩膀上(一分钟能做什么?:不可思议的“战拖”心理学)
  7. 安装卸载Windows服务方法(2种方法)
  8. 【软件工程】-项目开发计划
  9. 谈谈对计算机网络的了解,对计算机网络的认识和了解
  10. CC++ recap
  11. 拼多多-桌上暖垫排行榜-好评榜调研
  12. 学计算机做纸质笔记,详细图文教你康奈尔大学推荐的超级笔记法,只要一张A4纸张,你也可以做学霸...
  13. 杭电1069 Monkey and Banana
  14. 请教PCI卡的DMA方式问题
  15. 长安战疫网络安全卫士守护赛 Shiro?
  16. Java 输出1-100之内的所有质数
  17. PostgreSQL学习篇9.5 货币类型
  18. 明日方舟统计寻访工具【附下载链接】
  19. 【android】读写设备节点
  20. Python进阶语法笔记(1)

热门文章

  1. 一键下载优美图库图片(附源码了哦)
  2. 石墨文档网页视频链接批量保存到百度网盘
  3. Js加载百度热点新闻
  4. Windows Server搭建SAN存储服务(一)
  5. 台式计算机 按键盘字母键 没反应6,电脑键盘失灵后的解决办法
  6. 自己做的本地识图软件DAMO_嗅图狗
  7. 什么是SystemUI?简单分析
  8. 【你问我答】不包装简历是不是面试机会都没有?
  9. 用大数据把电视观众“挖”出来
  10. C语言实现关机的小代码,不怎么完善,新人勿喷!