linux查看磁盘容量
父目录:linux磁盘管理
我们知道目录文件中存储的是该目录下文件的文件名和inode的对应关系。通过ls命令查看的目录大小,其实代表的是这个目录中文件数量的多少。 并不反应目录实际在磁盘中所占的容量。通过df命令可以知道磁盘的总容量,du命令可以查看某个目录所占的磁盘容量。
一.df和du命令查看磁盘和目录的容量
回到顶部1.df命令
回到顶部
df命令列出文件系统的整体磁盘使用量;
df命令常用格式如下:
[root@initroot ~]# df [-ahikHTm] [目录或文件名] 选项与参数: -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统; -k :以 KBytes 的容量显示各文件系统; -m :以 MBytes 的容量显示各文件系统; -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; -H :以 M=1000K 取代 M=1024K 的进位方式; -T :连同该 partition 的 filesystem 名称 (例如 xfs) 也列出; -i :不用磁盘容量,而以 inode 的数量来显示列出系统中所有的filesystem:
[root@initroot ~]# df Filesystem 1K-blocks Used Available Use% Mounted on udev 2502456 0 2502456 0% /dev tmpfs 507140 2112 505028 1% /run /dev/sda1 92364456 26831636 60797948 31% / tmpfs 2535688 124976 2410712 5% /dev/shm tmpfs 5120 4 5116 1% /run/lock tmpfs 2535688 0 2535688 0% /sys/fs/cgroup virtualshare 312568828 73574916 238993912 24% /media/sf_virtualshare tmpfs 507136 32 507104 1% /run/user/1000 tmpfs 507136 0 507136 0% /run/user/0df默认将系统中所有的文件系统(不包含内存中的文件系统和swap)列出来,显示的容量单位为1kb
各字段含义如下:
1.Filesystem:代表该文件系统是在哪个 partition ,所以列出装置名称;至于那个 /dev/shm/ 目录,其实是利用内存虚拟出来的磁盘空间,通常是总物理内存的一半! 由于 是透过内存仿真出来的磁盘,因此你在这个目录底下建立任何数据文件时,访问速度是非常快速的! (在内存内工作) 不过,也由于他是内存仿真出来的,因此这个文件系统的大小在每部主机上都不一 样,而且建立的东西在下次开机时就消失了! 因为是在内存中嘛!
2.1k-blocks:说明底下的数字单位是 1KB 呦!可利用 -h 或 -m 来改变容量;
3.Used:顾名思义,就是使用掉的磁盘空间啦!
4.Available:也就是剩下的磁盘空间大小;
5.Use%:就是磁盘的使用率啦!如果使用率高达 90% 以上时, 最好需要注意一下了,免得容量不足造成系统问题喔! (例如最容易被灌爆的 /var/spool/mail 这个放置邮件的磁盘)
6.Mounted on:就是磁盘挂载的目录所在啦!(挂载点啦!)
-h选项可以以更易读的容量单位显示:
[root@initroot ~]# df -h Filesystem Size Used Avail Use% Mounted on udev 2.4G 0 2.4G 0% /dev tmpfs 496M 2.1M 494M 1% /run /dev/sda1 89G 26G 58G 31% / tmpfs 2.5G 117M 2.4G 5% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 2.5G 0 2.5G 0% /sys/fs/cgroup virtualshare 299G 71G 228G 24% /media/sf_virtualshare tmpfs 496M 32K 496M 1% /run/user/1000 tmpfs 496M 0 496M 0% /run/user/0我们看到容量单位以GBytes, MBytes, KBytes单位显示。
将系统内的所有特殊文件格式及名称都列出来
[root@initroot ~]# df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on sysfs sysfs 0 0 0 - /sys proc proc 0 0 0 - /proc udev devtmpfs 2502456 0 2502456 0% /dev devpts devpts 0 0 0 - /dev/pts tmpfs tmpfs 507140 2180 504960 1% /run /dev/sda1 ext4 92364456 26831676 60797908 31% / securityfs securityfs 0 0 0 - /sys/kernel/security tmpfs tmpfs 2535688 122016 2413672 5% /dev/shm tmpfs tmpfs 5120 4 5116 1% /run/lock tmpfs tmpfs 2535688 0 2535688 0% /sys/fs/cgroup cgroup cgroup2 0 0 0 - /sys/fs/cgroup/unified cgroup cgroup 0 0 0 - /sys/fs/cgroup/systemd pstore pstore 0 0 0 - /sys/fs/pstore cgroup cgroup 0 0 0 - /sys/fs/cgroup/blkio cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpuset cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct cgroup cgroup 0 0 0 - /sys/fs/cgroup/hugetlb cgroup cgroup 0 0 0 - /sys/fs/cgroup/memory cgroup cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio cgroup cgroup 0 0 0 - /sys/fs/cgroup/freezer cgroup cgroup 0 0 0 - /sys/fs/cgroup/perf_event cgroup cgroup 0 0 0 - /sys/fs/cgroup/pids cgroup cgroup 0 0 0 - /sys/fs/cgroup/devices cgroup cgroup 0 0 0 - /sys/fs/cgroup/rdma systemd-1 autofs 0 0 0 - /proc/sys/fs/binfmt_misc debugfs debugfs 0 0 0 - /sys/kernel/debug mqueue mqueue 0 0 0 - /dev/mqueue hugetlbfs hugetlbfs 0 0 0 - /dev/hugepages fusectl fusectl 0 0 0 - /sys/fs/fuse/connections configfs configfs 0 0 0 - /sys/kernel/config virtualshare vboxsf 312568828 73574916 238993912 24% /media/sf_virtualshare tmpfs tmpfs 507136 32 507104 1% /run/user/1000 gvfsd-fuse fuse.gvfsd-fuse 0 0 0 - /run/user/1000/gvfs tmpfs tmpfs 507136 0 507136 0% /run/user/0有很多特殊的文件系统,这些文件系统是用内存虚拟出来的,并不实际占用磁盘容量, 例如proc文件系统,挂载点为/proc.
另外需要注意的是,如果使用 -a 这个参数时,系统会出现 /proc 这个挂载点,但是里面的东西都是 0 ,不要紧张! /proc 的东西都是 Linux 系统所需要加载的系统数据,而且是挂载在『内存当中』 的, 所以当然没有占任何的磁盘空间啰!
如果df后面接有目录或者文件参数,那么df会自动分析该目录或文件所在的文件系统分区, 并将该文件系统分区的详细信息显示出来,这样就可以知道某个目录下还有多少容量可以使用了!
将/etc目录下的可用的磁盘容量以易读的容量格式显示:
[root@initroot ~]# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/sda1 89G 26G 58G 31% /列出各文件系统分区中可用的inode数量列出:
[root@initroot ~]# df -ih Filesystem Inodes IUsed IFree IUse% Mounted on udev 611K 437 611K 1% /dev tmpfs 620K 689 619K 1% /run /dev/sda1 5.7M 1.2M 4.5M 21% / tmpfs 620K 219 619K 1% /dev/shm tmpfs 620K 6 620K 1% /run/lock tmpfs 620K 18 620K 1% /sys/fs/cgroup virtualshare 1000 -976K 977K - /media/sf_virtualshare tmpfs 620K 34 620K 1% /run/user/1000 tmpfs 620K 11 620K 1% /run/user/0以上列出了可用的inode剩余量与总容量。通常inode的数量剩余都比block还要多。
由于 df 主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在 Superblock 内的信息, 所以这个指令显示结果的速度非常的快速!在显示的结果中你需要特别留意的是那个根目录的剩余容量! 因为我们所有的数据都是由根目录衍生出来的,因此当根目录的剩余容量剩下 0 时,那你的 Linux 可能就问题很大了。
2.du命令
回到顶部
du命令评估文件系统的磁盘使用量,常用来显示目录所占的磁盘容量
du命令常用格式如下:
[root@initroot ~]# du [-ahskm] 文件或目录名称 选项与参数: -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。 -h :以人们较易读的容量格式 (G/M) 显示; -s :列出总量而已,而不列出每个各别的目录占用容量; -S :不包括子目录下的总计,与 -s 有点差别。 -k :以 KBytes 列出容量显示; -m :以 MBytes 列出容量显示;列出当前目录下的所有文件所占磁盘的容量
[root@initroot ~]# du 4 ./.cache/dconf 4 ./.cache/abrt 8 ./.cache #每个目录都会列出来 ....(中间省略).... 0 ./test4 4 ./.ssh #包括隐藏文件的目录 76 . #这个目录(.)所占用的总量直接输入 du 没有加任何选项时,则 du 会分析『目前所在目录』 的文件与目录所占用的磁盘空间。但是,实际显示时,仅会显示目录容量(不含文件), 因此 . 目录有很多文件没有被列出来,所以全部的目录相加不会等于 . 的容量喔! 此外,输出的数值数据为 1K 大小的容量单位。
但是将文件的容量也列出来
[root@initroot ~]# du -a 4 ./.bash_logout 4 ./.bash_profile 4 ./.bashrc ....(中间省略).... #有文件的列表了4 ./.ssh/known_hosts 4 ./.ssh 76 .检查根目录底下每个目录所占用的容量
[root@initroot ~]# du -sm /* 0 /bin 99 /boot ....(中间省略).... du: cannot access ‘/proc/17772/task/17772/fd/4’: No such file or directory du: cannot access ‘/proc/17772/fdinfo/4’: No such file or directory 0 /proc 1 /root 25 /run #不会占用硬盘空间! ....(中间省略).... 3126 /usr 117 /var这是du命令最常用的用法了。利用通配符*来代表每个目录,如果想要检查某个目录下,哪个子目录占用最大的容量,可以用这个方法找出来。 值得注意的是,如果刚刚安装好 Linux 时,那么整个系统容量最大的应该是 /usr 。 而 /proc 虽然有列出容量,但是那个容量是在内存中,不占磁盘空间。
至于 /proc 里头会列出一堆No such file or directory的错误,别担心!因为是内存内的程序,程序执行结束就会消失,因此会有些目录找不到,是正确的! 与 df 不一样的是,du 这个指令其实会直接到文件系统内去搜寻所有的文件数据, 所以du往往会花费更多的时间。此外,在默认的情况下,容量的输出是以 KB 来设计的, 如果你想要知道目录占了多少 MB ,那么就使用 -m 这个参数即可啰! 如果你只想要知道该目录占了多少容量的话,使用 -s 就可以啦!
至于 -S 这个选项部分,由于 du 默认会将所有文件的大小均列出,因此假设你在 /etc 底下使用 du时, 所有的文件大小,包括 /etc 底下的次目录容量也会被计算一次。然后最终的容量 (/etc) 也会加总一次, 因此很多朋友都会误会 du 分析的结果不太对劲。所以啰,如果想要列出某目录下的全部数据, 或许也可以加上 -S 的选项,减少次目录的加总喔!
initroot编辑整理,转载请注明www.initroot.com
100次点赞
100次阅读