我今天在FreeBSD机器上遇到了这个问题。问题在于,这是一个工件vi(不是vim,不确定是否vim会造成此问题)。该文件正在占用空间,但尚未完全写入磁盘。
您可以使用以下方法进行检查:
$ fstat -f /path/to/mount/point |sort -nk8 |tail
这将查看所有打开的文件,并按-n第8列(键,-k8)对数字进行排序(通过),显示最后十个项目。
就我而言,最终(最大)条目如下所示:
bob vi 12345 4 /var 97267 -rwx------ 1569454080 rw
这意味着进程(PID)12345消耗了1.46G磁盘(第八列除以1024³),尽管没有du注意到它。 vi查看超大文件太可怕了;甚至100MB也足够。1.5G(或该文件实际有多大)是荒谬的。
解决方案是sudo kill -HUP 12345(如果不起作用,我会这样做sudo kill 12345,如果也失败了,那么可怕的kill -9事情就会发挥作用)。
避免在大文件上使用文本编辑器。快速浏览的示例解决方法:
假设合理的线长:
{ head -n1000 big.log; tail -n1000 big.log } |vim -R -
wc -l big.log |awk -v n=2000 'NR==FNR{L=$1;next}FNR%int(L/n)==1' - big.log |vim -R -
假设不合理的大行:
{ head -c8000 big.log; tail -c8000 big.log } |vim -R -
vim -R在安装时,用它们代替view因为vim几乎总是更好。随意将它们插入view或vi -R代替。
如果要打开这么大的文件进行实际编辑,请考虑使用sed或awk其他编程方法。