Rain WikiWindows · Linux · Android

journalctl และ systemd journal

เครื่องมือบรรทัดคำสั่งดิสทริบิวชันที่ใช้ systemdลบได้อย่างปลอดภัย: เฉพาะด้วยเครื่องมือของตัวเอง

journalctl คือคำสั่งสำหรับอ่าน systemd journal ซึ่งเป็นที่เก็บข้อมูลบันทึกแบบไบนารีที่ใช้ใน Linux ส่วนใหญ่ในปัจจุบัน สามารถกรองข้อความตามบริการ การบูต เวลา และระดับความสำคัญ อีกทั้งยังสามารถรายงานและจำกัดการใช้งานดิสก์ของ journal ซึ่งมักจะขยายขนาดจนถึงหลายกิกะไบต์ใน /var/log/journal

1การอ่านบันทึก

journalctl -u nginx.service ใช้แสดงข้อความของหน่วยบริการหนึ่งๆ -b จำกัดผลลัพธ์เฉพาะการบูตปัจจุบัน -b -1 สำหรับการบูตครั้งก่อนหน้า -p err แสดงเฉพาะข้อผิดพลาดและระดับที่แย่กว่า '--since "1 hour ago"' จำกัดตามเวลา และ -f ใช้ติดตามข้อความใหม่แบบเรียลไทม์

2การใช้งานดิสก์

journalctl --disk-usage แสดงขนาดรวมของไฟล์ journal ทั้งแบบใช้งานอยู่และที่เก็บถาวร

--vacuum-size=, --vacuum-time= และ --vacuum-files= จะลบไฟล์ journal ที่เก็บถาวรออกจนกว่าจะถึงขีดจำกัดที่กำหนด โดยจะไม่ยุ่งกับไฟล์ที่กำลังใช้งานอยู่

3การจำกัดถาวร

การจำกัดสามารถตั้งค่าได้ใน /etc/systemd/journald.conf เช่น SystemMaxUse=500M จากนั้นนำไปใช้ด้วย systemctl restart systemd-journald หากไม่มีการตั้งค่า journald จะเก็บ journal ไว้ภายใน 10% ของขนาดระบบไฟล์โดยค่าเริ่มต้น และจำกัดไว้สูงสุดที่ 4 GB

วิธีลดขนาด journal

  1. ตรวจสอบขนาด: journalctl --disk-usage
  2. หมุนไฟล์ที่ใช้งานอยู่เพื่อให้สามารถล้างข้อมูลได้: sudo journalctl --rotate
  3. เก็บไว้เพียงสองสัปดาห์: sudo journalctl --vacuum-time=2weeks
  4. หรือเก็บไว้สูงสุด 500 MB: sudo journalctl --vacuum-size=500M
  5. หากต้องการให้เป็นค่าถาวร ให้ตั้งค่า SystemMaxUse=500M ใน /etc/systemd/journald.conf แล้วรัน: sudo systemctl restart systemd-journald

ข้อควรระวัง

  • บันทึกที่ถูกล้างจะหายไป ควรเก็บประวัติไว้ให้เพียงพอสำหรับการตรวจสอบปัญหา
  • ห้ามลบไฟล์ใน /var/log/journal ด้วยตนเองในขณะที่ journald กำลังทำงาน

แหล่งอ้างอิง

  1. journalctl(1) man7.org
  2. journald.conf(5) man7.org

หมายเหตุ: RainServer นำเสนอการตรวจสอบและการล้างข้อมูลอย่างปลอดภัยสำหรับ Linux เซิร์ฟเวอร์ โดยจะแสดงสิ่งที่กำลังจะเปลี่ยนแปลงและขออนุญาตก่อนเสมอ

ตรวจสอบล่าสุด: