Answers:
当然,还有更多精心设计的方法,但是我记得的是
du --max-depth = 1 -h /
现在,使用占用最多空间的目录,(du --max-depth=1 -h /yourdir)
并深入查找,直到找到罪魁祸首。
如果希望输出按大小排序并且不关心人类可读的格式,则也可以du --max-depth=1 /your_dir | sort -n
df -k显示哪个fs是问题。然后cd到它的顶层目录并运行du -xk | 排序-n | 尾号-25,这将显示排在前25个目录,对于sun 9或更早版本,将x替换为d。
请注意,文件可以在仍被写入的同时删除,因此它们在创建过程运行时会使用磁盘空间,但没有文件名。
这使它无法使用常规工具查找-您可以使用lsof调查哪些进程具有打开的文件。
/usr/sbin/lsof | grep deleted
用来得到这个。
如果可以在系统上运行软件,则xdiskusage将以图形方式显示正在占用您空间的目录/文件。非常有用。
我相信KDE包含类似的东西。
如果它是纯文本的,并且您无法安装其他软件,那么创造性地使用du
可能也会使您到达那里。
head
和sort
。另外,您应该使用格式设置功能。
您可以使用以下命令来查找占用过多空间的文件或文件夹。
例如,要显示当前文件夹中最大的前20个目录,请使用以下单行代码:
du -ah . | sort -rh | head -20
要么:
du -a . | sort -rn | head -20
对于当前目录中前20个最大的文件(递归):
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
或人类可读的尺寸:
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
第二个命令正确的OSX / BSD的工作(如
sort
没有-h
),你需要安装sort
的coreutils
。然后将bin文件夹添加到您的文件夹中PATH
。
您可以将以下命令定义为别名(例如,添加到rc文件中,例如.bash_profile
):
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
然后运行big
或big-files
在您认为发生的文件夹中运行(例如在中/home
)。
这是我拼凑的东西,用于跟踪数据库服务器上的一些恶意进程:rabbitfinder
#!/bin/sh
tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
这有点笨拙,但不是很健壮,但是可以这样工作:
ps -lFp
将显示文件由什么进程拥有
user@poseidon:~$ tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
./tmp/output:
F S UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME CMD
0 R 1000 14310 14275 23 80 0 - 1072 - 748 1 22:19 pts/2 00:00:06 dd if /dev/zero of ./output bs 1024 count 10000000