ฉันพบปัญหานี้ในกล่อง 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หรือวิธีการเขียนโปรแกรมอื่น ๆ