लिनक्स के तहत लॉग फ़ाइलों की सफाई


10

मैं कर्नेल मॉड्यूल की कुछ विशेषताओं का परीक्षण करने के लिए kvm ubuntu 10.04 वर्चुअल मशीन का उपयोग कर रहा हूं। मैं /var/logउस मॉड्यूल के बारे में कर्नेल संदेशों का निरीक्षण करने के लिए फ़ाइलों के माध्यम से grep करता हूं ।

एक स्वच्छ स्थिति से शुरू करने के लिए, मैं लॉग फ़ाइलों को पुराने संदेशों को हटाकर निष्पादित करता हूं rm -rf /var/log/*और फिर वर्चुअल मशीन को रीबूट करता हूं । हालाँकि, मैं रिबूट करने के बाद, नई लॉग फ़ाइलों में अभी भी उन पुराने लॉग संदेश शामिल हैं। फ़ाइलों को हटाने और वर्चुअल मशीन को रीबूट करने में लगभग 5-6 चक्र लगते हैं, आखिरकार उन लॉग फ़ाइल संदेशों से छुटकारा पाने के लिए।

ये क्यों हो रहा है? क्या लॉग फ़ाइलों को साफ़ करने का एक आसान तरीका है?


logrotateस्वचालित रूप से लॉग को हटाने और घुमाने के बारे में आधिकारिक लिनक्स सॉफ्टवेयर है।
हनन एन।

मुझे घुमाना नहीं था। बस उन्हें मिटा दो।
चिंतनशील

1
मेरे लिए काम करने के बाद लगता है: 1. rm -rf / var / log / * 2. dmesg -c 3. रिबूट चूंकि यह काम करता है, मुझे लगता है कि कर्नेल बूट करते समय पिछले लॉग संदेशों को पढ़ता है, उन्हें बफर में रखता है और उन्हें लिखता है रिबूट करते समय एक बार फिर से फाइल करें। अगर किसी को वास्तविक तंत्र के बारे में अधिक जानकारी है तो कृपया अपडेट करें।
चिंतन-

जवाबों:


7

पुराने लॉग को साफ करने का सबसे आसान तरीका उन्हें हटाना नहीं है।

लॉग को साफ करने का सबसे अच्छा तरीका है या तो logrotateहनन एन। के रूप में बताया या:

find /var/log -type f -exec /bin/cp /dev/null {} \;

लॉग फ़ाइलों में से प्रत्येक के लिए। मुझे बिल्कुल यकीन नहीं है कि आप पिछली बूट से किन लॉग एंट्रीज का जिक्र कर रहे हैं, लेकिन अगर आप चाहते हैं कि बूट के बाद यह क्लियर हो जाए तो आप कमांड को /etc/rc.localस्क्रिप्ट में डाल सकते हैं इसलिए सभी लॉगिंग बूट के बाद के लिए है।

आम तौर पर यद्यपि आप लॉग को दूर नहीं करना चाहते हैं क्योंकि वे सभी समस्या निवारण में आपका प्रारंभिक बिंदु हैं।


मुझे लगता है कि 'cp' कमांड पिछले विस्तारित फ़ाइल नाम पर सभी लॉग को कॉपी करेगा ... शायद आपका मतलब था find /var/log/* -exec cp /dev/null {} \;:?
jjmontes

@jjmontes धन्यवाद। मैं समय पर खोज आदेश के साथ नहीं आ सका। :) लेकिन इसे वास्तव में मेरे द्वारा संपादित किए जाने के तरीके में बदल दिया जाएगा
कार्लसन

3

आप जो कर रहे हैं, उसके लिए कर्नेल संदेशों के लिए एक अतिरिक्त लॉग फ़ाइल जोड़ना बेहतर हो सकता है। कुछ लॉग डेमॉन आपको लिखे जा रहे रिकॉर्ड पर मैच करने की अनुमति देंगे, ताकि आपको केवल अपनी फ़ाइल में उपयुक्त रिकॉर्ड मिलें। फिर आप रनों के बीच फ़ाइलों को घुमा सकते हैं, हटा सकते हैं या उनका नाम बदल सकते हैं। (यदि आप रिबूट नहीं करते हैं, तो आपको इसकी फ़ाइलों को फिर से खोलने के लिए लॉग डेमॉन को एक एचयूपी सिग्नल भेजने की आवश्यकता हो सकती है।

ऐसे उपकरण भी हैं जो लॉग से केवल नए रिकॉर्ड निकालेंगे। logtailसे उपयोगिता logcheckपैकेज ऐसे ही एक उपयोगिता है। इसे एक वैकल्पिक ऑफसेट फ़ाइल के साथ चलाया जा सकता है।

अन्य उपकरण हैं जो एक पैटर्न से मेल खाते रिकॉर्ड्स के लिए लॉग देखते हैं और उन्हें रिपोर्ट करते हैं। इनमें से एक आपके लिए अच्छा काम कर सकता है।


1

यह आपके लॉग ऑन को क्लीन लॉग में घुमाकर और फिर पुराने लॉग एंट्रीज को डिलीट करके (Ubuntu LTS 14.04 पर) ठीक काम करता प्रतीत होता है। यह cp / dev / null मेथड के समान है, लेकिन मुझे लगता है कि यह क्लीनर है। YMMV

logrotate --force /etc/logrotate.conf
find /var/log/ -name '*[0-5]*' -exec rm {} \;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.