나는 오늘 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
또는 다른 프로그래밍 방법.