【linux】运维-磁盘空间不足-用到的命令
常用:
注:du -s 和 -d 不能同时都用, -s | -d n
注:df -H 和 -h 区别 -H 1K=1000 -h 1K=1024
#-T 显示文件系统类型 -h 高可读性显示
df -Th
#-c显示总和 ;sort -r 倒序显示 ;2>/dev/null 过滤错误信息
du -hsc * 2>/dev/null | sort -h #列出目录下所有的文件或目录大小
du -h -d 1 2>/dev/null | sort -h #仅列出目录大小
inodes使用情况:
如果inodes使用使用到100%,即使磁盘空间有富余,也会提示磁盘空间已满。
df -i #选项-i,查看inodes使用情况
查找大目录:
#找出占用比较大的目录 -d 目录层级 0指当前目录层#-d 可变层级查找
du -h -d 3 2>/dev/null |sort -h #找出占用空间比较大的目录,再进入目录查找大文件
查找大文件:
find . -type f -size +30M -exec du -hs {} \; #列出当前目录下, 文件大小大于30M 的文件
注:1) {} 代表的是由find找到的内容,会被放置到{}位置中 2) exec 一直到\;为止,代表find额外动作的开始(-exec)到结束('\\;'),在这中间的就是find指令内的额外动作 3) 因为; 在bash环境下是由特殊意义的,因此利用反斜杠来转义
查找大文件(被删除但未释放空间的):
#查看已删除但是没有释放的文件的PID
lsof |grep delete
#查看该PID对应的应用
ps -ef |grep PID
#杀死该应用
kill -9 PID
#重新开启该应用,如
./spingBoot.sh start
查找文件/目录字节为0的文件(即空文件)
find / -empty
附:为什么ls 和 du查询文件大小结果不一样???
du -sh /etc/passwd
ls -lh /etc/passwd
du -sb /etc/passwd
原因:这里用ls和du分别查看passwd文件的使用大小,du命令显示的4KB(默认情况下,不到4KB以4KB显示,因为一个块是4KB,可用sb属性查看真实大小),而ls命令显示的是1.3KB(真实大小)。
博主自己认为,类似四舍五入了吧,大小是KB级别,用M单位 -m 查看会是1M 。所以用对应级别的查,就是对的。
附:为什么df的结果,有时候Used和Avail加起来不够Size ?
这是Linux文件系统的一种安全策略,它默认会为root用户保留5%的磁盘空间,留作紧急情况使用。
#可以通过tune2fs修改预留空间的比例
tune2fs -m 1 /dev/vda1
附:硬盘接口:IDE、STAT、SCSI、SAS