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