Android

วิธีตัดไฟล์ (ว่าง) ใน linux

A day with Scandale - Harmonie Collection - Spring / Summer 2013

A day with Scandale - Harmonie Collection - Spring / Summer 2013

สารบัญ:

Anonim

ในบางสถานการณ์คุณอาจต้องการตัดทอน (ว่าง) ไฟล์ที่มีอยู่ให้มีความยาวเป็นศูนย์ คำง่ายๆการตัดไฟล์หมายถึงการลบเนื้อหาไฟล์โดยไม่ลบไฟล์

การตัดไฟล์เป็นวิธีที่รวดเร็วและง่ายกว่าการลบไฟล์สร้างไฟล์ใหม่และตั้งค่าสิทธิ์และความเป็นเจ้าของที่ถูกต้อง นอกจากนี้หากไฟล์ถูกเปิดโดยกระบวนการการลบไฟล์อาจทำให้โปรแกรมที่ใช้ทำงานผิดปกติ

บทช่วยสอนนี้อธิบายวิธีตัดทอนไฟล์ให้เป็นขนาดศูนย์ในระบบ Linux โดยใช้การเปลี่ยนเส้นทางเชลล์และคำสั่ง truncate

การเปลี่ยนเส้นทางเชลล์

วิธีที่ง่ายและใช้มากที่สุดในการตัดไฟล์คือการใช้โอเปอเรเตอร์การเปลี่ยนเส้นทางของเชลล์

รูปแบบทั่วไปสำหรับการตัดไฟล์โดยใช้การเปลี่ยนเส้นทางคือ:

: > filename

ลองแบ่งคำสั่ง:

  • เครื่องหมายจุดคู่ : หมายถึง true และไม่สร้างเอาต์พุตตัวดำเนินการเปลี่ยนทิศทาง > เปลี่ยนทิศทางเอาต์พุตของคำสั่งก่อนหน้าไปยังไฟล์ที่กำหนด filename ไฟล์ไฟล์ที่คุณต้องการตัดทอน

หากไฟล์มีอยู่ไฟล์จะถูกตัดเหลือศูนย์ มิฉะนั้นไฟล์จะถูกสร้างขึ้น

แทนที่จะเป็น : ยังสามารถใช้คำสั่งอื่นที่ไม่สร้างเอาต์พุต

นี่คือตัวอย่างของการใช้คำสั่ง cat เพื่อส่งออกเนื้อหาของอุปกรณ์ /dev/null ซึ่งส่งกลับเฉพาะอักขระสิ้นสุดไฟล์:

cat /dev/null > filename

คำสั่งอื่นที่สามารถใช้ได้คือ echo ตัวเลือก -n บอกให้ echo ไม่ต่อท้ายบรรทัดใหม่:

echo -n > filename

บนเชลล์ที่ทันสมัยส่วนใหญ่เช่น Bash หรือ Zsh คุณสามารถละเว้นคำสั่งก่อนที่จะเปลี่ยนสัญลักษณ์และใช้:

> filename

เพื่อให้สามารถตัดไฟล์ได้คุณต้องมีสิทธิ์เขียนไฟล์ โดยปกติแล้วคุณจะใช้ sudo สำหรับสิ่งนี้ แต่สิทธิ์ของรูทที่ยกระดับจะไม่นำไปใช้กับการเปลี่ยนเส้นทาง นี่คือตัวอย่าง:

sudo: > /var/log/syslog

bash: /var/log/syslog: Permission denied

มีวิธีแก้ไขปัญหาต่าง ๆ ที่อนุญาตการเปลี่ยนเส้นทางด้วย sudo ตัวเลือกแรกสามารถเรียกใช้เชลล์ใหม่ด้วย sudo และดำเนินการคำสั่งภายในเชลล์นั้นโดยใช้แฟ -c :

sudo sh -c '> filename'

ตัวเลือกอื่นคือการไพพ์เอาต์พุตไปยังคำสั่ง tee , ยกระดับสิทธิ์ tee ด้วย sudo และเขียนเอาต์พุตว่างลงในไฟล์ที่กำหนด:

: | sudo tee filename

truncate คำสั่ง

truncate เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ให้คุณย่อขนาดหรือขยายขนาดไฟล์ให้มีขนาดที่กำหนด

ไวยากรณ์ทั่วไปสำหรับการตัดไฟล์เป็นขนาดศูนย์ด้วยคำสั่ง truncate มีดังนี้:

truncate -s 0 filename

อ็อพชัน -s 0 ตั้งค่าขนาดไฟล์เป็นศูนย์

ตัวอย่างเช่นหากต้องการล้างบันทึกการเข้าถึง Nginx คุณจะต้อง:

sudo truncate -s 0 /var/log/nginx/access.log

ล้างไฟล์บันทึกทั้งหมด

เมื่อเวลาผ่านไปดิสก์ไดรฟ์ของคุณอาจรกด้วยไฟล์บันทึกขนาดใหญ่จำนวนมากที่ใช้พื้นที่ดิสก์จำนวนมาก

คำสั่งต่อไปนี้จะว่างไฟล์ที่ลงท้ายด้วย“.log” ภายใต้ไดเรกทอรี /var/log :

sudo truncate -s 0 /var/log/**/*.log

ตัวเลือกที่ดีกว่าคือการหมุนบีบอัดและลบไฟล์บันทึกด้วยเครื่องมือ logrotate

ข้อสรุป

หากต้องการตัดไฟล์ใน Linux ให้ใช้โอเปอเรเตอร์การเปลี่ยนเส้นทาง > ตามด้วยชื่อไฟล์

ตัดขั้ว