Linux查看磁盘信息(编写shell脚本来分析文件的占用情况)

今天笔记本不停的提示我空间不足空间不足。于是在图形化界面下看了一下磁盘的使用情况,居然使用率99%。(当初换固态硬盘的为了图便宜换了258G,觉得差不多够用了,现在崩盘了)一直觉得没给固态中放什么大文件,还是空间不足了很好奇是什么目录占了大量的空间。就Google了一堆资料来学习如何查看磁盘的信息的命令,最后得到了自己想要的结果(tomcat 的logs占了120G)。现将查到的资料记录一下。

涉及到Linux磁盘信息或者文件的磁盘占用情况。主要涉及到两个命令: df du
du查看目录大小
df查看磁盘使用情况

一.du使用说明

du的英文为:disk usage,含义是磁盘空间使用情况,功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块的情况,如果没有指定目录,则对当前的目录进行统计。

du的命令各个选项含义如下:

  • a:显示全部目录和其次目录下的每个档案所占的磁盘空间
  • s:只显示各档案大小的总合
  • b:大小用bytes来表示
  • x:跳过在不同文件系统上的目录不予统计
  • c: 表示最后计算出所列目录的大小之和。

使用示例:
1.查看某个目录的大小:du -hs xxxxxx
2.查看目录下所有目录的大小并按大小降序排列:du -sm /etc/* | sort -nr | less
3.查看当前目录下所有文件或文件夹占用空间:du -h –max-depth=1

参数说明:-h是使输出结果更易于人类阅读(使用K,M,G的人性化形式显示);du -s只展示目录的使用总量(不分别展示各个子目录情况),-m是以MB为单位展示目录的大小

二.df使用说明

于du不同的是,du是面向文件的命令,只计算被文件占用的空间。不计算文件系统metadata 占用的空间。df则是基于文件系统总体来计算,通过文件系统中未分配空间来确定系统中已经分配空间的大小。df命令可以获取硬盘占用了多少空间,还剩下多少空间,它也可以显示所有文件系统对i节点和磁盘块的使用情况。

df命令各个选择的含义如下:

  • a:显示全部的档案系统和各分割区的磁盘使用情形
  • i:显示i -nodes的使用量
  • k:大小用k来表示 (默认值)
  • t:显示某一个档案系统的所有分割区磁盘使用量
  • x:显示不是某一个档案系统的所有分割区磁盘使用量
  • T:显示每个分割区所属的档案系统名称
  • ….

现在根据以上学习的命令和命令的参数来编写shell脚本以备下次磁盘再次崩盘的情况下使用。

#!/bin/bash
if [ $# == 0 ]
then
  du -am --max-depth=1 | sort -nr
else
  du -am --max-depth=1 $1 | sort -nr
fi
~     

你可能感兴趣的:(linux)