जवाबों:
जब आप mail.log फ़ाइल को हटाते हैं, तो rsyslog (ubuntu पर) फ़ाइल को ढीला हैंडल करें। इसे उबंटू पर वापस काम करने के लिए, कृपया दें:
sudo service rsyslog restart
यह न केवल नई फ़ाइल बनाएगा बल्कि लॉग लिखना भी शुरू कर देगा।
यह syslog में एक बग है, लेकिन किसी प्रोग्राम द्वारा ओपन होने पर किसी फाइल को डिलीट करने पर एक कॉमन इश्यू दिखाता है। जब आप "rm" करते हैं, तो आप एक निर्देशिका प्रविष्टि निकाल रहे हैं, लेकिन आप अंतर्निहित फ़ाइल को नहीं निकाल रहे हैं। ऑपरेटिंग सिस्टम फ़ाइल के संदर्भों की एक गिनती रखता है, और वास्तव में अंतर्निहित फ़ाइल डेटा को तब तक नहीं हटाएगा जब तक कि संदर्भ गणना शून्य न हो जाए। एक औसत फ़ाइल के मामले में, बंद फाइल की संदर्भ गणना एक (निर्देशिका प्रविष्टि) है। जब फ़ाइल खोली जाती है, तो गिनती दो में बढ़ जाती है। यदि कोई दूसरा प्रोग्राम समान फ़ाइल खोलता है, तो गणना तीन में बढ़ाई जाएगी। यदि निर्देशिका प्रविष्टि अब हटा दी गई है, तो गिनती को दो में घटाया जाता है - जिसका अर्थ है कि फ़ाइल विसंगति है (उसका नाम),
जब आप / var / लॉग / मेल हटाते हैं, तो सिस्टम लॉगर में अभी भी लिखने के लिए फाइल खुली होती है। यदि आप एक नया / var / लॉग / मेल बनाते हैं, तो यह उस फाइल से अलग होगा जो सिस्टम लॉगर वर्तमान में लिख रहा है। सब कुछ सुसंगत बनाने का एकमात्र तरीका सिस्टम लॉगर को पुनरारंभ करना है। जब मूल सिस्टम लकड़हारा समाप्त हो जाता है, तो इससे जुड़ी सभी फाइलें बंद हो जाती हैं - जिसमें गुमनाम मेल लॉग भी शामिल है जिसकी निर्देशिका प्रविष्टि आपने हटा दी है। जब आप सिस्टम लकड़हारा पुनः आरंभ करते हैं, तो यह लॉग संदेश लिखने की आवश्यकता होने पर / var / log / mail को फिर से खुलेगा और उसके बाद खुला रखेगा।
एक और तरीका यह अक्सर पता चलता है जब एक रनिंग प्रोग्राम फ़ाइल डेटा के साथ डिस्क को भरता है; उपयोगकर्ता बहुत बड़ी फ़ाइल को हटा देता है, लेकिन डिस्क स्थान को मुक्त नहीं किया जाता है, क्योंकि फ़ाइल अभी भी मौजूद है, और डिस्क स्थान ले रही है, लेकिन निर्देशिका प्रविष्टि को हटा दिया गया है। जब प्रोग्राम समाप्त होता है (या तो क्योंकि उपयोगकर्ता ने इसे मार दिया या यह खुद समाप्त हो गया), डिस्क स्थान को पुनर्प्राप्त किया जाएगा क्योंकि फ़ाइल पर संदर्भ गणना शून्य हो गई होगी।
लकड़हारा इसे रोकने के लिए क्या कर सकता है पहले लॉग संदेश लिखें, यह देखने के लिए जांचें कि क्या लॉग फ़ाइल निर्देशिका प्रविष्टि मौजूद है, और यदि यह मौजूद नहीं है, तो मूल लॉग फ़ाइल को बंद करें, एक नया खोलें, और फिर दोबारा लिखें संदेश - ताकि संदेश खो न जाए। लेकिन उस सभी को करने के लिए सिस्टम लकड़हारे की तुलना में बहुत अधिक जटिलता की आवश्यकता होगी - प्रत्येक संदेश के लिए यह लिखता है कि अतिरिक्त निर्देशिका जांच के कारण लिखने में थोड़ा अधिक समय लगेगा - जो हर बार फ़ाइल के सफल होने पर हटाया नहीं गया।
उपरोक्त सभी को और अधिक स्पष्ट रूप से समझने के लिए, निम्नलिखित कमांड शिक्षाप्रद है, क्योंकि यह सिस्टम कॉल का वर्णन करता है जो निर्देशिका प्रविष्टि को हटाने और संदर्भ में कमी करता है: "मैन 3 अनलिंक"
यह CentOS 7 पर समस्या नहीं है। किसी ने सोचा था कि पत्रकार के माध्यम से जाने के लिए पोस्टफ़िक्स मेल लॉग्स होना एक बहुत अच्छा विचार होगा। यदि आप पोस्टफ़िक्स लॉग देखना चाहते हैं:
journalctl -u postfix
(पूरी लॉग देखने के लिए)
journalctl -u postfix -f
(लॉग को पूंछने के लिए)
पोस्टफ़िक्स के लिए आपको main.cf में भी आवश्यकता हो सकती है
syslog_name = postfix
journalctl --vacuum-time=1d