我今天在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
其他编程方法。