快速定位linux服务器磁盘占用较大的文件位置
1、查看目录下文件或目录所占用的磁盘空间大小
查10级目录文件大小、倒序、前20
# du:指定计算目录或文件所占用的磁盘空间大小。
# -ah:以人类可读的方式显示磁盘空间大小,即将数字转换为K,M,G等易读的单位。
# --max-depth=10:显示目录结构的最大深度为10级。在本例中,这意味着只显示包含指定目录(/)的所有目录和文件的总体大小,但是对于更深的目录结构,我们将无法看到其详细信息。
# /:指定要计算大小的目录。
# 2>/dev/null:忽略标准错误输出,将其重定向到/dev/null设备上,这样我们就不会看到任何错误信息。
# sort -hr:按照文件大小进行排序,h表示按照人类可读的格式,r表示反向排序。
# head -n 30:显示排序后的前30个结果。
du -ah --max-depth=10 / 2>/dev/null | sort -hr | head -n 30
2、清空文件夹下指定类型的文件内容,保留文件
命令会直接清空.log文件内容,因此请在使用前确保您已经备份了需要保留的文件内容。
# /path/to/folder为需要清空.log文件的文件夹路径。
# -name "*.log"表示只匹配后缀为.log的文件;
# -type f表示只处理文件类型(不包括目录等其他类型);
# -exec truncate -s 0 {} \;表示对于匹配的每一个文件,执行truncate -s 0命令将文件大小截为0,即清空文件内容。
# 这里使用了truncate命令而非echo "" > filename.log的方式清空文件内容,是因为truncate命令可以更快速地清空大文件
find /path/to/folder -name "*.log" -type f -exec truncate -s 0 {} \;