如何在Linux上以非阻塞方式显示最大的文件?

时间:2018-12-14 09:06:39

标签: filesystems diskspace

多年来,我一直在使用下面的du命令的变体来生成有关特定位置的最大文件的报告,并且在大多数情况下效果良好。

du -L -ch /var/log | sort -rh  | head -n 10 &> log-size.txt

在很多情况下,这种方法都被卡住了,即使使用timeout -s KILL 5m ...方法也无法阻止它。

几年前,这是由于NFS挂载停滞引起的,但最近我在根本不使用NFS的VM上遇到了这种情况。显然,有大约1:30的机会可以在openstack构建中使用它。

我了解到,在某些情况下,如果存在循环,后面的符号链接(-L)可能会阻塞“ du”,但是即使创建了一些循环,我的测试也无法重现该问题。

我无法避免遵循符号链接,因为这就是文件的组织方式。

生成此报告的更安全的选择是,将其限制为最大运行持续时间,该报告不会被阻止,或者至少会阻止。将此命令的执行时间限制在几分钟内是非常重要的-如果我也可以得到部分超时结果或一些调试信息,甚至更好。

1 个答案:

答案 0 :(得分:0)

如果您不关心稀疏文件,并且可以处理明显的大小(而不是磁盘上的大小),那么ls应该可以正常工作:ls -L --sort=s|head -n10> log-size.txt