1、df磁盘空间查看

  df可以查看一级文件夹大小、使用比例、档案系统及其挂入点。

  1. [root@oms ~]# df -Th
  2. Filesystem Type Size Used Avail Use% Mounted on
  3. /dev/vda1 ext4 40G 35G .1G % /
  4. devtmpfs devtmpfs .9G .9G % /dev
  5. tmpfs tmpfs .9G .9G % /dev/shm
  6. tmpfs tmpfs .9G 191M .7G % /run
  7. tmpfs tmpfs .9G .9G % /sys/fs/cgroup
  8. tmpfs tmpfs 379M 379M % /run/user/

  -T:可以用来查看分区的文件系统。

  -h:表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。

  上面的命令输出的第一个字段(Filesystem)及最后一个字段(Mounted on)分别是档案系统及其挂入点。我们可以看到 /dev/vda1 这个分割区被挂在根目录下。

  接下来的四个字段 Size、Used、Avail、及 Use% 分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比。 FreeBSD下,当硬盘容量已满时,您可能会看到已使用的百分比超过 100%,因为 FreeBSD 会留一些空间给 root,让 root 在档案系统满时,还是可以写东西到该档案系统中,以进行管理。

2、du详细磁盘使用分析

  du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du -sh 目录。

  du常用的选项: 
-h:以人类可读的方式显示。
-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小。
-s:只显示目录占用的磁盘空间大小,不显示其子目录和文件占用的磁盘空间大小。
-c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和。
--apparent-size:显示目录或文件自身的大小
-l :统计硬链接占用磁盘空间的大小。
-L:统计符号链接所指向的文件占用的磁盘空间大小。
  默认情况下,du不显示目录下文件占用磁盘空间的信息,但它会显示其下子目录占用磁盘空间的信息;而使用-s选项以后,只显示xx目录占用磁盘空间的大小。
  du --apparent-size:显示文件或目录自身大小,而不是它们占用的磁盘空间大小。文件或目录占用磁盘空间的大小与它们自身大小有时候并非完全一致;这种现象非linux所独有,windows里也是如此。
  du -c:使用此选项时,不仅显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和。
  1. [root@oms ~]# du -csh /opt/software /var/log
  2. 31G /opt/software
  3. 224M /var/log
  4. 32G total

  du -l:这个选项主要是针对硬链接。在统计目录占用磁盘空间大小时,-l选项会把硬链接也统计进来。帮助文档是这样解释的:

  Count the size of all files,even if they have appeared already(as a hard link)。

  我们在download目录下建立一个硬链接,指向本目录下的一个文件。不使用-l选项时,du发现硬链接指向本目录下的文件,于是自动忽略该链接文件,以免造成重复统计;使用-l选项,du才会把硬链接文件也统计进来。

  du -L:这个选项主要是针对符号链接。它会把符号链接所指向的文件占用磁盘空间的大小也统计进来。帮助文档是这样解释的:

  Dereference symbolic links(show the disk space used by the file or directory that the link points to instead of the space used by the link)。

  注意:du命令在统计目录占用磁盘空间时,默认不统计链接文件(无论是硬链接或是符号链接),所以要用-l和-L选项特地指出来;此外,du命令默认不显示目录下文件占用磁盘空间的信息,但是却默认显示其下子目录所占用磁盘空间的信息。

  du命令还可以对结果进行排序,以方便快速找出占用空间最多目录。

  1. du -s 目录 | sort -rn #这是按字节排序
  2. du -sh 目录 | sort -rn #这是按兆(M)来排序
  3. #由于-sh大小显示看起来是乱的,因此建议使用du -s|sort -nr
  4. du -s 目录 | sort -rn | head #选出排在前面的10个
  5. du -s 目录 | sort -rn | tail #选出排在后面的10个

du -h --max-depth=1 /home仅列出home目录下面所有的一级目录文件大小;

du -h --max-depth=1 /home/* 列出home下面所有一级目录的一级目录文件大小。

  1. [root@oms ~]# du -h --max-depth= /var/log
  2. 16K /var/log/tuned
  3. 92M /var/log/OBS
  4. 92M /var/log/tomcat
  5. 38M /var/log/audit
  6. 224M /var/log
  7. [root@oms ~]# du -h --max-depth= /var/log/*
  8. 38M /var/log/audit
  9. 2M /var/log/tomcat/catalina.log
  10. 90M /var/log/tomcat/server.log
  11. 92M /var/log/tomcat
  12. 33M /var/log/OBS/pics
  13. 59M /var/log/OBS/image
  14. 92M /var/log/OBS
  15. 16K /var/log/tuned
  16. ........

  统计总数大小

  du -sh xmldb/

  du -sm * | sort -n //统计当前目录大小 并安大小 排序

  du -sk * | sort -n

  du -sk * | grep guojf //看一个人的大小

  du -m | cut -d "/" -f 2 //看第二个/ 字符前的文字

查看此文件夹有多少文件 /*/*/* 有多少文件

du xmldb/

du xmldb/*/*/* |wc -l

wc [-lmw]说明

参数说明:-l :多少行;  -m:多少字符; -w:多少字

3、rm清理磁盘

  linux下删除指定文件、文件夹:rm
  一、Linux下删除文件和文件夹常用命令如下:
  删除文件: rm file1  file2  
  删除文件夹: rm -rf dir
  注意:rmdir 只能够删除 空文件夹。

  二、删除指定文件(夹)之外的所有文件
  需要在当前文件夹中进行:

  1. #删除keep文件之外的所有文件
  2. rm -rf !(folder)
  3.  
  4. #删除folder1和folder2文件之外的所有文件
  5. rm -rf !(folder1 | folder2)

  当前文件夹中结合使用grep和xargs来处理文件名:

  1. #删除keep文件之外的所有文件
  2. ls | grep -v keep | xargs rm

  说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件。
  好处:使用了grep来正则表达式来匹配文件名字,可以一次保留多个文件,从而进行更加准确的处理。

  使用find命令代替ls,改进方法3从而能够处理制定文件夹的文件:

  1. #删除当前test文件夹中keep文件之外的所有文件
  2. find ./test/ | grep -v keep | xargs rm

  说明,用grep而不用find -name选取名字,因为find选取名字时比较麻烦,对正则表达式支持不够,无法排除指定文件名。

  直接使用find命令删除其他文件:

  1. #删除keep以外的其他文件。
  2. find ./ -name '[^k][^e][^e][^p]*' -exec rm -rf {} \;
  3.  
  4. #删除keep以外的其他文件。推荐!
  5. find ./ -name '[^k][^e][^e][^p]*' | xargs rm -rf

  说明:上面第二行的代码效率高些,原因在于删除多个文件时 -exec会启动多个进程来处理,而xargs会启动一个rm进程来处理。

  三、实践:删除除debug.log 和sys.out 文件外的所有文件。

  1. #建立查找规则
  2. vi test.txt
  3.  
  4. ^debug.log$
  5. ^sys.out$
  6.  
  7. #尝试查找:
  8. ls | grep -f test.txt
  9. debug.log
  10. sys.out
  11.  
  12. #删除要保留文件外的其它文件:
  13. ls | grep -vf test.txt |xargs rm
  14. #记得加v,保留要保留的文件,不要删错了

  删除超过一个月时间的日志文件:

  1. #删除,文件名中带有数字,超过30天的日志:
  2. find -mtime + -name "*[0-9]*" -exec rm {} \;

  注:可以根据名称规则过滤。

Linux磁盘空间分析及清理(df、du、rm)的更多相关文章

  1. 【linux】linux磁盘空间 目录查看清理 和 文件查看清理

    =========================大目录排查============================= 一.首先查看磁盘挂载,磁盘空间使用情况 1.进入根路径 cd / 2.查看磁盘挂 ...

  2. Docker磁盘空间分析与清理

    首先使用du命令逐层分析docker磁盘的使用情况: (base) [root@openvino docker]# du -h --max-depth=1 | sort 0 ./containerd ...

  3. 查看Linux磁盘空间大小命令

    发表于:2012-09-17 10:25   查看Linux磁盘空间大小 一.df 命令: df 是来自于coreutils 软件包,系统安装时,就自带的:我们通过这个命令可以查看磁盘的使用情况以及文 ...

  4. Linux 系统磁盘空间占满,df 和 du 结果不一致

    服务器运行一段时间后df查看磁盘剩余空间不足,通过du统计发现被几个文件占用,遂删除之.过了一段时间磁盘空间再次不足,通过du统计却找不到那么多大文件.搜索后才得知原因:文件删除后空间没有释放,du统 ...

  5. Linux磁盘空间不足处理方法

    维护Linux服务器正常使用需要经常删除Linux系统运行产生的系统日志和业务环境产生的debug日志文件.安装包等.本文主要描述如何通过脚本实现清理业务环境产生的 debug日志文件和上传或备份的打 ...

  6. linux磁盘空间使用问题

    linux磁盘空间用满的处理方法 linux下空间满可能有两种情况 可以通过命令 df -h  查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) df -i  查看索引节点的占用(Inod ...

  7. Linux磁盘空间被未知资源耗尽【转】

    Linux磁盘空间被未知资源耗尽 在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间, ...

  8. Linux学习之CentOS(十七)-----释放 Linux 系统预留的硬盘空间 与Linux磁盘空间被未知资源耗尽 (转)

    释放 Linux 系统预留的硬盘空间  大多数文件系统都会保留一部分空间留作紧急情况时用(比如硬盘空间满了),这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash,给监 ...

  9. linux磁盘空间满了 但是没有大文件

    很常见的一个问题 linux磁盘空间满了 但是没有大文件 解决思路: 1.用df 检查发现/根目录可用空间为0 [root@/]#df -h 2.用du检查发现各目录占用的空间都很少,有约3G的空间莫 ...

随机推荐

  1. Nginx调试入门

    1.查看nginx.conf配置文件是否有错误 ./nginx -t -c ./nginx.conf   #可以看到,正常情况下语法没问题,配置文件测试成功了,-t测试-c配置文件 如果我故意加入错误 ...

  2. 移植Valgrind检测Android JNI内存泄漏

    1.相关工具 Valgrind:从Valgrind官网下载最新的源码包,我这里用的是:valgrind 3.14.0 (tar.bz2) [17MB] - 9 October 2018. Ubuntu ...

  3. 正点原子stm32f103mini版串口下载BOOT0引脚与与CH340G芯片引脚RTS、DTR、的关系原理

    在做串口实验时,一直搞不明白一键下载是怎么回事,于是自己就去捉摸CH340G这块芯片,那么这里我将详细的讲解一下这块芯片怎么与stm32配合使用的. 1.由CH340G芯片资料可以知道这两个引脚的功能 ...

  4. Python的xml模块

    先来一段xml代码 <?xml version="1.0"?> <data> <country name="Liechtenstein&qu ...

  5. Java如何运行一个class文件的main方法

    假设如下目录有个class文件,并且里面有main方法: d:\workspace\eclipse\com\JavaCore\classloader\MyClassLoader.class 首先进入c ...

  6. (转)EF5+SQLserver2012迁移到EF6+mysql5.5.47

    原文地址:https://www.cnblogs.com/tinyjian/p/6235014.html:https://www.cnblogs.com/tinyjian/p/6235397.html ...

  7. 可空类型(Nullable)

    C# 单问号 ? 与 双问号 ?? ? : 单问号用于对 int,double,bool 等无法直接赋值为 null 的数据类型进行 null 的赋值,意思是这个数据类型是 NullAble 类型的. ...

  8. react实现tab切换效果

    ...this.state = { // 全部数据 addressJobs: [ { address: '北京', jobs: ['北京职位1', '北京职位2', '北京职位3', '北京职位4', ...

  9. sql server driver ODBC驱动超时

  10. LVM逻辑卷疑问?

    创建完逻辑卷后,删除以/dev/vdb1和/dev/vdb2为基础的分区后,逻辑卷依然生效???