今日、FreeBSDのボックスでこの問題に遭遇しました。問題は、それがvi
(この問題を引き起こすvim
かどうかわからない)のアーティファクトであったことでしたvim
。ファイルはスペースを消費していましたが、ディスクに完全に書き込まれていませんでした。
以下で確認できます:
$ fstat -f /path/to/mount/point |sort -nk8 |tail
これは、開いているすべてのファイルを調べ-n
、8番目の列(キー、-k8
)で並べ替え(数値でを介して)、最後の10項目を表示します。
私の場合、最後の(最大の)エントリは次のようになりました。
bob vi 12345 4 /var 97267 -rwx------ 1569454080 rw
これは、プロセス(PID)12345がdu
気づいていないにもかかわらず、1.46G(8列目を1024³で割った値)のディスクを消費していたことを意味していました。 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
またはいくつかの他のプログラム的なアプローチ。