Câu trả lời:
Khi bạn xóa tệp mail.log, rsyslog (trên ubfox) sẽ xử lý lỏng lẻo thành tệp. Để làm cho nó hoạt động trở lại trên Ubuntu, vui lòng cung cấp:
sudo service rsyslog restart
Điều này sẽ không chỉ tạo tập tin mới mà còn bắt đầu viết nhật ký.
Đây là một lỗi trong syslog, nhưng minh họa một vấn đề phổ biến khi một người xóa một tệp trong khi nó được mở bởi một chương trình. Khi bạn thực hiện "rm", bạn đang xóa một mục nhập thư mục, nhưng bạn KHÔNG xóa tệp bên dưới. Hệ điều hành giữ một số lượng tham chiếu đến tệp và sẽ không thực sự xóa dữ liệu tệp cơ bản cho đến khi số tham chiếu về không. Trong trường hợp tệp trung bình, số tham chiếu của tệp chưa mở là một (mục nhập thư mục). Khi tệp được mở, số lượng được tăng lên hai. Nếu một chương trình thứ hai mở cùng một tệp, số lượng sẽ được tăng lên thành ba. Nếu mục nhập thư mục hiện bị xóa, số đếm sẽ giảm xuống còn hai - có nghĩa là tệp không đồng nhất (không có tên),
Khi bạn xóa / var / log / mail, bộ ghi hệ thống vẫn mở tệp để ghi. Nếu bạn tạo một / var / log / mail mới, nó sẽ trỏ đến một tệp khác với tệp mà trình ghi nhật ký hệ thống hiện đang ghi. Cách duy nhất để làm cho mọi thứ nhất quán là khởi động lại bộ ghi hệ thống. Khi trình ghi nhật ký hệ thống ban đầu chấm dứt, tất cả các tệp được liên kết với nó sẽ bị đóng - bao gồm nhật ký thư nặc danh có mục nhập thư mục bạn đã xóa. Khi bạn khởi động lại bộ ghi hệ thống, nó sẽ mở lại / var / log / mail khi nó cần viết một thông điệp tường trình và sẽ giữ cho nó mở sau đó.
Một cách khác mà điều này thường được phát hiện là khi một chương trình đang chạy lấp đầy tất cả các đĩa với dữ liệu tệp; Người dùng xóa tệp rất lớn, nhưng không gian đĩa không được giải phóng, vì tệp vẫn tồn tại và đang chiếm dung lượng đĩa, nhưng mục nhập thư mục đã bị xóa. Khi chương trình kết thúc (vì người dùng đã giết nó hoặc nó tự kết thúc), không gian đĩa sẽ được phục hồi vì số tham chiếu trên tệp sẽ giảm về không.
Những gì trình ghi nhật ký có thể làm để ngăn chặn điều này là trước tiên hãy viết thông điệp tường trình, kiểm tra xem liệu thư mục tệp nhật ký có tồn tại không và nếu nó không tồn tại, hãy đóng tệp nhật ký gốc, mở một tệp mới, sau đó viết lại tin nhắn - để tin nhắn không bị mất. Nhưng để làm tất cả những điều đó đòi hỏi sự phức tạp hơn nhiều so với trình ghi nhật ký hệ thống phải có - đối với mỗi thông báo, nó sẽ mất nhiều thời gian hơn để viết do kiểm tra thư mục bổ sung - sẽ thành công mỗi khi tệp có KHÔNG bị xóa.
Để hiểu rõ hơn tất cả những điều trên, lệnh sau đây mang tính hướng dẫn, vì nó mô tả lệnh gọi hệ thống thực hiện loại bỏ mục nhập thư mục và phần giảm tham chiếu: "man 3 hủy liên kết"
Đó không phải là vấn đề trên CentOS 7. Ai đó nghĩ rằng sẽ có một ý tưởng tuyệt vời để có nhật ký thư hậu tố để đi qua nhà báo. Nếu bạn muốn xem nhật ký postfix:
journalctl -u postfix
(để xem toàn bộ nhật ký)
journalctl -u postfix -f
(để theo dõi nhật ký)
Bạn cũng có thể cần trong main.cf cho postfix
syslog_name = postfix
journalctl --vacuum-time=1d