การล้างไฟล์บันทึกภายใต้ linux


10

ฉันใช้เครื่องเสมือน kvm ubuntu 10.04 เพื่อทดสอบคุณสมบัติบางอย่างของโมดูลเคอร์เนล ฉัน grep ผ่าน/var/logไฟล์เพื่อสังเกตข้อความเคอร์เนลเกี่ยวกับโมดูลนั้น

ในการเริ่มต้นจากสถานะที่สะอาดฉันจะลบไฟล์บันทึกที่มีข้อความเก่าโดยดำเนินการrm -rf /var/log/*แล้วรีบูตเครื่องเสมือน อย่างไรก็ตามหลังจากฉันรีบูตไฟล์บันทึกใหม่ยังคงมีข้อความบันทึกเก่าเหล่านั้น ใช้เวลาประมาณ 5-6 รอบในการลบไฟล์และรีบูตเครื่องเสมือนเพื่อกำจัดข้อความล็อกไฟล์เหล่านั้นในที่สุด

ทำไมสิ่งนี้จึงเกิดขึ้น มีวิธีที่ง่ายกว่าในการล้างไฟล์บันทึกหรือไม่


logrotateเป็นซอฟต์แวร์ linux ที่เป็นทางการเกี่ยวกับการลบและการหมุนบันทึกโดยอัตโนมัติ
Hanan N.

ฉันไม่ต้องการหมุน เพียงเช็ดออก
contemplatingzombie

1
ต่อไปนี้ดูเหมือนว่าจะใช้งานได้สำหรับฉัน: 1. rm -rf / var / log / * 2. dmesg -c 3. รีบูตเนื่องจากการทำงานนี้ฉันคิดว่าเคอร์เนลอ่านข้อความบันทึกก่อนหน้านี้ขณะทำการบูทเก็บไว้ในบัฟเฟอร์และเขียนไว้ ไปยังไฟล์อีกครั้งในขณะที่รีบูตเครื่อง หากใครรู้เพิ่มเติมเกี่ยวกับกลไกจริงโปรดอัปเดต
contemplatingzombie

คำตอบ:


7

วิธีที่ง่ายที่สุดในการล้างบันทึกเก่าคือไม่ลบ

วิธีที่ดีที่สุดในการทำความสะอาดบันทึกคือlogrotateHanan N. นั้นเด่นชัดหรือ:

find /var/log -type f -exec /bin/cp /dev/null {} \;

สำหรับไฟล์บันทึกแต่ละไฟล์ ฉันไม่แน่ใจว่ารายการบันทึกใดที่คุณอ้างถึงจากการบู๊ตครั้งก่อน แต่ถ้าคุณต้องการลบข้อมูลนี้หลังจากการบู๊ตคุณสามารถใส่คำสั่งด้านบนลงใน/etc/rc.localสคริปต์เพื่อให้การบันทึกทั้งหมดใช้สำหรับการบู๊ต

โดยปกติแล้วแม้ว่าคุณจะไม่ต้องการล้างบันทึกออกไปเพราะมันเป็นจุดเริ่มต้นของคุณในการแก้ไขปัญหาทั้งหมด


ผมคิดว่าคำสั่ง 'ซีพี' จะคัดลอกบันทึกทั่วชื่อไฟล์ขยายสุดท้าย ... บางทีคุณอาจหมายถึงfind /var/log/* -exec cp /dev/null {} \;?
jjmontes

@jjmontes ขอบคุณ ฉันไม่สามารถหาคำสั่ง find ได้ในเวลานั้น :) แต่จริง ๆ แล้วมันจะเปลี่ยนไปเป็นวิธีที่ฉันแก้ไข
Karlson

3

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

นอกจากนี้ยังมีเครื่องมือที่จะดึงเฉพาะบันทึกใหม่จากบันทึก logtailยูทิลิตี้จากlogcheckแพคเกจเป็นหนึ่งเช่นสาธารณูปโภค มันสามารถเรียกใช้กับไฟล์ออฟเซตทางเลือก

มีเครื่องมืออื่น ๆ ที่เฝ้าดูบันทึกสำหรับการจับคู่รูปแบบและการรายงานพวกเขา หนึ่งในเหล่านี้อาจทำงานได้ดีสำหรับคุณ


1

สิ่งนี้ดูเหมือนว่าจะทำงานได้ดี (บน Ubuntu LTS 14.04) โดยการหมุนบันทึกของคุณออกไปยังบันทึกที่สะอาดแล้วลบรายการบันทึกเก่า มันคล้ายกับวิธี cp / dev / null แต่ฉันคิดว่ามันสะอาดกว่า YMMV

logrotate --force /etc/logrotate.conf
find /var/log/ -name '*[0-5]*' -exec rm {} \;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.