服务器上磁盘快满了,记录一下排查命令
在Linux系统中,du
命令主要用于查看文件和目录占用的磁盘空间。如果你想通过使用du
命令来帮助清理服务器上的空间,可以遵循以下步骤来进行:
-
查找大文件或目录:首先,你需要找到哪些文件或目录占用了大量空间。可以使用以下命令来查找最大的前10个目录(按大小降序排列):
du -h --max-depth=1 /path/to/start | sort -hr | head -n 10
这里,
/path/to/start
是你想开始查找的目录,默认可以是/
根目录,但请注意,这可能需要一些时间来完成。
要在Linux中递归查找当前目录下文件大小最大的前10个文件,可以使用find
命令结合du
(disk usage)和sort
命令来实现。这里有一个常见的做法是使用find
查找文件,通过管道传递给du
计算每个文件的大小,然后用sort
进行排序,最后用head
命令取出前10个。下面是一个示例命令:
find . -type f -exec du -h {} + | sort -rh | head -n 10
解释一下这个命令的各部分作用:
find .
:从当前目录开始查找。-type f
:只查找文件,不包括目录。-exec du -h {} +
:对每个查找到的文件执行du -h
命令,-h
参数使得输出的文件大小为人类可读的格式(如KB, MB, GB等),{} +
是find
命令的语法,代表将之前匹配到的所有文件作为参数一次性传递给du
命令。|
:管道符号,将前一个命令的输出作为后一个命令的输入。sort -rh
:-r
表示逆序排序,即从大到小;-h
表示按人类可读的大小进行排序,这样大小单位不同的文件也可以正确排序。head -n 10
:取出排序后的前10行,即最大的10个文件的信息。
请注意,这个命令可能在大量文件的目录下运行得比较慢,因为它需要计算每个文件的大小。此外,由于文件名中可能包含空格或其他特殊字符,使用这种方法是安全的,因为find
的-exec
动作会正确处理这些情况。
-
检查具体目录:找到大的目录后,你可以深入该目录进一步查找具体的大文件。例如,如果发现
/var/log
占用空间较大,可以运行:du -h --max-depth=1 /var/log | sort -hr
-
删除不必要的文件:确定了不需要的文件后,可以使用
rm
命令删除它们。例如,要删除名为largefile.txt
的文件,可以运行:rm -f /path/to/largefile.txt
注意: 使用
rm
命令要格外小心,因为一旦文件被删除就很难恢复,请确保你不会误删重要数据。 -
清理临时文件和日志:常见的空间占用者包括临时文件和旧的日志文件。可以考虑清理以下目录的内容(但在执行前请务必确认这些文件是否真的不再需要):
/tmp
:临时文件目录/var/log
:日志文件目录- 用户的临时文件和下载目录
-
定期任务:为了防止空间再次被不必要的文件填满,可以设置定期清理任务,比如使用
cron
安排定时任务自动清理临时文件和旧日志。
记得,在执行任何删除操作之前,都应该做好数据备份,以防止意外丢失重要信息。