किसी तरह यह प्रक्रिया अभी भी एक फ़ाइल को लिखती है, भले ही मैंने इसका नाम बदल दिया हो।
इसे ऑपरेटिंग सिस्टम का सामान्य ऑपरेशन कहा जाता है । एक बार फ़ाइल खोलने के बाद, यह प्रक्रिया के लिए एक गोरे से कोई फर्क नहीं पड़ता है (खुली) फ़ाइल के डिस्क्रिप्टर के साथ फ़ाइल का क्या नाम है (या) चाहे फ़ाइल का नाम बिल्कुल भी हो।
सीधे शब्दों में कहें, तो आपके प्रोग्राम की लॉगिंग स्कीम (यदि वह वास्तव में क्या है) सोफोमेरिक है। आप वास्तव में अनुभव कर रहे हैं कि यह क्यों मिलावट है। यह फ़ाइल हमेशा के लिए बढ़ेगी और बढ़ेगी, जब तक कि लॉग को उत्पन्न करने वाला प्रोग्राम चालू रहता है, जब तक कि यह उपयोगकर्ता के लिए उपलब्ध डिस्क स्थान के सभी का उपभोग नहीं कर लेता है। (यदि आपका प्रोग्राम सुपरयुसर के रूप में चल रहा है, तो स्वर्ग आपकी मदद करता है।) यदि कोई फ़ाइल को अनलिंक करता है, तो प्रोग्राम अनिश्चित काल तक डिस्क स्थान पर खाना जारी रखता है, क्योंकि फ़ाइल बिना नाम के डिस्क पर मौजूद रहती है, जब तक कि उसकी अंतिम ओपन फाइल डिस्क्रिप्टर बंद न हो जाए। और लॉग फ़ाइल को घुमाने या प्रोग्राम के बाहर से ही ओपन फाइल डिस्क्रिप्टर की फाइल स्थिति को रीसेट करना संभव नहीं है। इसलिए ट्रंकेशन भी काम नहीं करता है, क्योंकि प्रोग्राम अपनी अंतिम स्थिति से लिखना जारी रखता है, जैसा किइस व्यक्ति की खोज की ।
ऐसा कुछ भी नहीं है जो आप अभी कर सकते हैं, अनुपस्थित डिबगर संलग्न करते हैं, जब तक कि कार्यक्रम समाप्त नहीं हो जाता। अगली बार, अपने कार्यक्रम को उसकी मानक त्रुटि या मानक आउटपुट में लॉग इन करने के लिए कहें, यदि वह संभव हो तो। तो फिर इस तरह के रूप में एक कार्यक्रम के लिए एक पाइप के माध्यम से है कि मानक त्रुटि / मानक आउटपुट भेजने multilog
, multilog
, s6-log
, svlogd
, tinylog
, या cyclog
। आपको लॉग फ़ाइल का साइज़-कैप्ड, स्वचालित रूप से साइकल, रोटेटेबल-ऑन-डिमांड सेट मिलेगा।
अगली बार कार्रवाई का एक अवर कोर्स फ़ाइल को एपेंड मोड में खोलना है। आपको लॉग की प्रतिलिपि बनाने और काट-छाँट करने के बारे में सोचना होगा, क्योंकि फ़ाइल का नाम बदलने से घूर्णन अभी भी काम नहीं करेगा; और निश्चित रूप से लॉग डेटा को खोने की क्षमता है, जैसा कि logrotate
मैनुअल पेज कहता है, क्योंकि कॉपी बनाने और फ़ाइल को रौंदने के बीच अवसर की खिड़की के कारण। इसके विपरीत उपर्युक्त लॉगिंग टूल, newsyslog
या के पसंद द्वारा लॉग रोटेशन के कारण अप्रत्याशित डेटा पर लॉग डेटा को नहीं खोते हैं logrotate
( या जिसकी आवश्यकता नहीं है और उपयोग नहीं करता है)। एक प्रक्रिया पर्यवेक्षक के साथ संयोजन में उनका उपयोग करें जो पाइप को खुला रखता है, और जब वे एक पुन: कॉन्फ़िगर करते हैं और मक्खी पर लकड़हारा फिर से शुरू करते हैं तो वे लॉग डेटा भी नहीं खोते हैं।