จะลบเนื้อหาของไฟล์ error.log อย่างไร แต่ให้ไฟล์ยังคงเหมือนเดิม


25

ฉันต้องการลบเนื้อหาของไฟล์ error.log (ไฟล์บันทึกข้อผิดพลาด nginx) แต่ฉันไม่ต้องการลบไฟล์จริงๆ

เป็นไปได้ไหม

ใช้งาน Ubuntu

คำตอบ:


67

คุณสามารถใช้สิ่งนี้:

>error.log

(พิมพ์แบบนั้น - การเปลี่ยนเส้นทางว่างเปล่า)

หรือ

truncate -s0 error.log

@Ignacio: หากไฟล์มีอยู่แล้วทั้งจะตัดทอน หากไฟล์ไม่มีอยู่ก็จะสร้างมันขึ้นมา
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

คุณพูดถูกฉันไม่ดี
Ignacio Vazquez-Abrams

ตัวเลือกสุดท้ายใช้งานได้สำหรับฉันด้วยเหตุผลบางอย่าง sudo> error.log ไม่ทำงานสำหรับฉัน (Ubuntu 12.04)
davidkonrad

5
@davidkonrad: คุณจะต้องรูทเพื่อให้การเปลี่ยนเส้นทางทำงานเนื่องจากsudoมีผลก่อนที่จะมีผล หรือคุณสามารถทำได้sudo bash -c '>error.log'
หยุดชั่วคราวจนกว่าจะมีประกาศ

1
@ divHelper11: ในคำตอบของฉันฉันบอกว่ามันเป็น "การเปลี่ยนเส้นทางออกที่ว่างเปล่า" นั่นหมายความว่าจะไม่มีการส่ง "ไม่มีอะไร" ไปยังไฟล์ที่มีชื่อและจะเขียนทับเนื้อหาที่มีอยู่ใด ๆ มันคล้ายกับecho "some words" > output.txtแต่ไม่มีอะไรเข้า
หยุดชั่วคราวจนกว่าจะมีประกาศเพิ่มเติม

1

คุณจะสับสนภูต ลบไฟล์จากนั้นส่งSIGHUPไปยัง nginx


SIGHUP? ฉันไม่สามารถปิด nginx ลงทำการล้างไฟล์แล้วเริ่มได้หรือไม่ ฉันต้องการทราบวิธีการลบไฟล์เพื่อความรู้ด้วย
user27449

หากคุณต้องการแน่นอน แต่นั่นจะรบกวนการบริการ
Ignacio Vazquez-Abrams

ฉันคิดว่าทั้งการเปลี่ยนเส้นทางแบบ null และ a truncateเป็นแบบอะตอมดังนั้นตราบใดที่ไม่มีการค้นหาเกิดขึ้น
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.