本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、命令详解
1.1【功能说明】
du是评估文件系统的磁盘使用量(常用在预估目录所占容量),而df是列出文件系统的整体磁盘使用量。
由于df主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在Superblock内的信息,所以这个指令显示结果的速度非常的快!在显示的结果中你需要特别留意的是那个根目录的剩余容量。因为我们所有的数据都是由根目录衍生出来的,因此当根目录的剩余容量为0时,那你的Linux可能就问题很大了。
1.2【语法格式】
[root@7bfe451a2fe1 ~]# df --help
Usage: df [OPTION]... [FILE]...
Show information about the file system on which each FILE resides,
or all file systems by default.
1.3【选项说明】
df常用参数选项说明
-a显示所有文件系统,包括系统特有的/proc等文件系统-k以KBytes 的容量显示各文件系统-m以MBytes 的容量显示各文件系统-h以容易理解的格式显示磁盘的使用情况 GBytes, MBytes, KBYtes-H以M=1000K取代M=1024K的进位方式-i显示文件系统的inode信息-t显示指定类型的磁盘-T连同该partition的filesystem名称也列出
二、使用范例
2.1 基本使用
# 不加参数,显示所有磁盘分区情况
df
# 以G/M等容易格式显示
df -h
# 显示inode信息
df -hi
# 显示指定类型的磁盘
df -t ext4
# 列出文件系统的类型
df -T
输出结果说明:
Filesystem代表该文件系统是在哪个partition,所以列出设备名称1k-blocks说明下面的数字单位是1KB,可利用-h,-m来改变数字单位Used使用掉的磁盘空间Available剩下的磁盘空间大小Use%磁盘的使用率,如使用率高达90%以上,需要注意啦Mounted on磁盘挂载的目录,挂载点
三、扩展知识
3.1 No space left on device错误
向磁盘写入数据提示如下错误:No space left on device,然后通过df -h查看磁盘空间,结果发现磁盘没满,那么请问这可能是什么原因?
可能是inode数量被耗尽了,用df -i可查看inode的使用情况。
导致上述inode满的原因有如下几种情况:
Linux系统目录/var/spool/clientmqueue(CentOS 5.8默认安装sendmail软件的邮件邮件的临时队列目录)或/var/spool/postfix/maildrop/(CentOS 6.6默认安装postfix软件的邮件的临时队列目录)很容易被大量小文件占满,导致出现“No space left on device”错误。
原因分析:系统中crond定时任务执行的程序有输出内容,输出内容会以邮件形式发给设置定时任务的用户,而若Sendmail/Prostfixwbtl没有启动,则会产生类似下面代码所求的这些文件,时间长了会把系统的inode数量耗尽,但是block的数量仍有剩余,所以使用df -h查看空间还用剩余。
cd /var/spool/clientmqueue
ls
dfr6FK21Pf031597 ... ...
解决方法:小文件太多,直接用rm -f删除会失败,显示参数过长的错误信息,这时需要用到ls|xargs rm -f命令进行删除。若想要根治,可采用如下方法。
因为主要是由定时任务引起的,所以可在定时任务后加上> /dev/null 2>&1来解决
0 0 * * * /bin/sh xxx/scripts/xxx.sh > /dev/null 2>&1
四、命令总结
- 2022/12/17 项目下周一准备上线啦