ฉันลบ/var/log/mail
ไฟล์โดยไม่ตั้งใจ จนถึงจุดที่ฉันสามารถตรวจสอบได้โดยใช้สิ่ง postfix ตอนนี้ดูเหมือนว่า Postfix จะไม่ส่งบันทึกไปที่/var/log/mail
เนื่องจากไฟล์ไม่ได้รับการปรับปรุงด้วยข้อความบันทึกใหม่
ฉันลบ/var/log/mail
ไฟล์โดยไม่ตั้งใจ จนถึงจุดที่ฉันสามารถตรวจสอบได้โดยใช้สิ่ง postfix ตอนนี้ดูเหมือนว่า Postfix จะไม่ส่งบันทึกไปที่/var/log/mail
เนื่องจากไฟล์ไม่ได้รับการปรับปรุงด้วยข้อความบันทึกใหม่
คำตอบ:
เมื่อคุณลบไฟล์ mail.log, rsyslog (บนอูบุนตู) หมายเลขอ้างอิงหลวมไปยังไฟล์ เพื่อให้มันทำงานบน Ubuntu ได้โปรดให้:
sudo service rsyslog restart
สิ่งนี้จะไม่เพียงสร้างไฟล์ใหม่ แต่เริ่มเขียนบันทึก
แม้หลังจากสร้างไฟล์เปล่า
touch /var/log/mail
คุณต้องรีสตาร์ท syslog
service syslog restart
และจากนั้นก็เข้าสู่ระบบได้รับ :)
นี่เป็นข้อผิดพลาดใน syslog แต่แสดงปัญหาที่พบบ่อยเมื่อไฟล์หนึ่งถูกลบในขณะที่โปรแกรมเปิดอยู่ เมื่อคุณทำ "rm" คุณจะลบรายการไดเรกทอรี แต่คุณไม่ได้ลบไฟล์ต้นแบบ ระบบปฏิบัติการจะทำการนับจำนวนการอ้างอิงไปยังไฟล์และจะไม่ลบข้อมูลไฟล์พื้นฐานจนกว่าจำนวนการอ้างอิงจะเป็นศูนย์ ในกรณีของไฟล์เฉลี่ยจำนวนการอ้างอิงของไฟล์ที่ยังไม่เปิดเป็นหนึ่ง (รายการไดเรกทอรี) เมื่อเปิดไฟล์การนับจะเพิ่มขึ้นเป็นสอง หากโปรแกรมที่สองเปิดไฟล์เดียวกันการนับจะเพิ่มขึ้นเป็นสาม หากรายการไดเรกทอรีถูกลบไปในขณะนี้การนับจะลดลงเป็นสองซึ่งหมายความว่าไฟล์ผิดปกติ (ไม่มีชื่อ)
เมื่อคุณลบ / var / log / mail ตัวบันทึกระบบจะยังคงเปิดไฟล์สำหรับการเขียน หากคุณสร้าง / var / log / mail ใหม่มันจะชี้ไปที่ไฟล์ที่แตกต่างจากที่ระบบบันทึกกำลังเขียนอยู่ วิธีเดียวที่จะทำให้ทุกอย่างสอดคล้องกันคือรีสตาร์ทตัวบันทึกระบบ เมื่อตัวบันทึกระบบดั้งเดิมสิ้นสุดลงไฟล์ทั้งหมดที่เกี่ยวข้องจะถูกปิด - รวมถึงบันทึกเมลที่ไม่ระบุชื่อซึ่งมีรายการไดเรกทอรีที่คุณลบ เมื่อคุณรีสตาร์ทตัวบันทึกระบบมันจะเปิด / var / log / mail อีกครั้งเมื่อต้องการเขียนข้อความบันทึกและจะเปิดไว้หลังจากนั้น
อีกวิธีหนึ่งที่พบบ่อยคือเมื่อโปรแกรมที่ทำงานเติมดิสก์ทั้งหมดด้วยข้อมูลไฟล์ ผู้ใช้ลบไฟล์ที่มีขนาดใหญ่มาก แต่พื้นที่ดิสก์ไม่ได้ถูกปล่อยให้ว่างเปล่าเนื่องจากไฟล์ยังคงมีอยู่และกำลังใช้พื้นที่ดิสก์ แต่รายการไดเรกทอรีถูกลบออก เมื่อโปรแกรมสิ้นสุดลง (เนื่องจากผู้ใช้ฆ่าหรือสิ้นสุดเอง) พื้นที่ดิสก์จะถูกกู้คืนเนื่องจากจำนวนการอ้างอิงในไฟล์จะหายไปเป็นศูนย์
สิ่งที่คนตัดไม้อาจทำเพื่อป้องกันสิ่งนี้คือการเขียนข้อความบันทึกก่อนตรวจสอบดูว่ามีรายการไดเรกทอรีไฟล์บันทึกอยู่หรือไม่และถ้าไม่มีอยู่ให้ปิดแฟ้มบันทึกต้นฉบับเปิดแฟ้มบันทึกใหม่แล้วเขียนใหม่ ข้อความ - เพื่อไม่ให้ข้อความหาย แต่การทำทั้งหมดนั้นจะต้องมีความซับซ้อนมากกว่าที่ระบบบันทึกควรจะมี - สำหรับแต่ละข้อความที่เขียนจะใช้เวลานานกว่าที่จะเขียนเนื่องจากการตรวจสอบไดเรกทอรีพิเศษ - ซึ่งจะสำเร็จทุกครั้งที่ไฟล์มี ไม่ถูกลบ
เพื่อให้เข้าใจทั้งหมดข้างต้นอย่างชัดเจนยิ่งขึ้นคำสั่งต่อไปนี้เป็นคำแนะนำเพราะอธิบายการเรียกระบบที่ดำเนินการลบรายการไดเรกทอรีและการลดการอ้างอิง: "man 3 unlink"
นั่นไม่ใช่ปัญหาของ CentOS 7 ใครบางคนคิดว่ามันเป็นความคิดที่ดีที่จะมีบันทึกเมล postfix เพื่อให้ผ่านนักข่าว หากคุณต้องการที่จะเห็นบันทึก postfix:
journalctl -u postfix
(เพื่อดูบันทึกทั้งหมด)
journalctl -u postfix -f
(เพื่อตัดบันทึก)
คุณอาจต้องการใน main.cf สำหรับ postfix
syslog_name = postfix
journalctl --vacuum-time=1d
fwiw รุ่นที่ใหม่กว่าของบันทึก postfix ไปยัง/var/log/mail.log
และฉันยังต้องทำงานsudo chmod a+w /var/log/mail*
และservice postfix restart
เพื่อรับบันทึก postfix ของฉันกลับมาหลังจากลบมัน