सवाल क्या लॉग साफ़ करने का कोई सही तरीका है?


मैं सोच रहा था कि सामान्य रूप से लॉग साफ़ करने का कोई उचित तरीका था या नहीं?

मैं उबंटू के लिए नया हूं और मैं पोस्टफिक्स सेट अप करने की कोशिश कर रहा हूं। लॉग इन सवाल है /var/log/mail.log। मैं सोच रहा था कि क्या इसे साफ़ करने और इसे सभी लाइनों को हटाने और इसे सहेजने के बजाय इसे साफ़ करने का सही तरीका था। मुझे लगता है कि लॉग को साफ़ करने और इसे सहेजने के तुरंत बाद त्रुटियों को कभी-कभी त्रुटियों पर लिखा नहीं जाता है।

साइड नोट: मुझे पोस्टफिक्स सेट करने में समस्या हो रही है और मैं लॉग इन पढ़ने के लिए इसे आसान बनाने की कोशिश कर रहा हूं, उम्मीद है कि यह मेरी मदद कर सकता है, बजाय सभी तरह से नीचे स्क्रॉल करने की बजाय।


54
2018-06-30 16:13


मूल


अगर आप फ़ाइल के अंत को देखना चाहते हैं तो पूंछ आपका दोस्त है। पिछली 5 लाइनों को प्रदर्शित करने के लिए tail /var/log/mail.log। फ़ाइल के अंत में लिखी गई सभी पंक्तियों को देखने के लिए tail -f /var/log/mail.log। - Iain
serverfault.com/questions/285843/... - poige


जवाब:


आप उपयोग कर सकते हैं:

> /var/log/mail.log

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

अगर आप लॉग की सामग्री देख रहे हैं तो भी आप इसका उपयोग करना चाहेंगे tail आदेश:

tail -f /var/log/mail.log

Ctrl-C पूंछ को तोड़ देगा।


67
2018-06-30 16:20



/bin/csh (फ्रीबीएसडी के लिए आम) इस बीच, "अमान्य नल कमांड" के साथ इसे जमानत देगा zsh (के लिए लोकप्रिय प्रतिस्थापन bash) ईओएफ इंतजार करेंगे। देख serverfault.com/a/381380/67675 - poige


हाँ, एक उचित तरीका है: आप नहीं करते हैं स्पष्ट बिल्कुल लॉग ऑन आप घुमाना उन्हें। रोटेशन में एक ही नाम के तहत लॉग आउटपुट को एक नई फ़ाइल में स्विच करना शामिल है, जिसमें पिछली एन लॉग फाइलें एन संबंधित फाइलनामों के सेट के तहत रखी गई हैं।

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

यदि लॉग फ़ाइल लिखने वाला प्रोग्राम है multilog वहाँ से daemontools पैकेजउदाहरण के लिए, तो आप लॉग को घुमाने के लिए कुछ भी नहीं करते हैं - कोई मैन्युअल स्क्रिप्ट नहीं, नहीं cron नौकरियों। बस बताओ multilog वह लॉग आउटपुट एक निर्देशिका के लिए है, और यह स्वचालित रूप से उस निर्देशिका में एन लॉग फ़ाइलों के स्वचालित रूप से घूर्णन और आकार-कैप्ड सेट को बनाए रखेगा।

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

यदि आप उपयोग कर रहे हैं rsyslog फिर लॉग फाइल लिखने के लिए लॉग फ़ाइल को लॉग फ़ाइल को एक निश्चित आकार तक पहुंचने और स्क्रिप्ट चलाने के बाद रोकने के लिए कहा जा सकता है। वास्तव में लॉग फ़ाइल का नाम बदलने के लिए आपको स्क्रिप्ट का मांस लिखना होगा और कुल आकार की बाधाओं के आधार पर पुरानी लॉग फ़ाइलों को हटा देना होगा, लेकिन कम से कम लॉगिंग प्रोग्राम ने फ़ाइल बंद कर दी है और यह हो रहा है जब लॉगिंग रोका गया है।

पुराना syslogd घूर्णन लॉग के तरीके, syslog-ng जैसे प्रोग्राम लॉगिंग से अभी भी उम्मीद है और जैसे उपकरण द्वारा उदाहरण के रूप में उदाहरण के रूप में logrotateद्वारा उल्लिखित djangofan यहां एक और जवाब में, कुछ हद तक अधिक खतरनाक है। एक रन करता है cron वह नौकरी जो समय-समय पर लॉग फ़ाइलों का नाम बदलती है, और लॉगिंग डिमन को पुनरारंभ करती है (जो भी डिमन पर्यवेक्षक इसका उपयोग कर रहा है)। इसके साथ समस्या यह है कि यह एक समग्र आकार टोपी लागू नहीं करता है। धीमी हफ्तों में कोई व्यक्ति बहुत छोटी दैनिक लॉग फाइल प्राप्त कर सकता है, जबकि व्यस्त दिनों में कोई भी एक बहुत बड़ी लॉग फ़ाइल प्राप्त कर सकता है जो आकार सीमा से अधिक है।

यही कारण है कि बाद में और बेहतर उपकरण जैसे multilog तथा svlogd फ़ाइल आकार कॉन्फ़िगरेशन विकल्प हैं और वास्तव में लॉग फ़ाइल आकार स्वयं को जांचें। दुनिया ने सीखा है कि एक कार्यक्रम के साथ लॉग पर मतदान cron नौकरियां, या यहां तक ​​कि ए logrotate डेमॉन, आकार के लिए विंडोज़ को गलत होने के लिए छोड़ देता है, और यह कि इन चेकों के लिए उचित जगह है, और इसी तरह rigourously प्रशासक-परिभाषित आकार कैप्स को लागू करें ताकि किसी की लॉग फाइलें उस विभाजन को निगलती न हों जो प्रोग्राम चालू है, वह प्रोग्राम में है जो वास्तव में फ़ाइलों को पहले स्थान पर लिख रहा है।


21
2017-07-01 10:58



Rsyslog के लिए, इसे आसानी से कॉन्फ़िगर किया जा सकता है ताकि "पैटर्न" द्वारा वर्णित फ़ाइल नामों पर भरोसा किया जा सके, उदाहरण के लिए, वर्ष, माह और दिन। यह एक के रूप में आसान है template(name="DYNmail" type="string" string="/var/log/%$YEAR%/%$MONTH%/%$DAY%/mail.log") निर्देश, एक के बाद if ($syslogfacility-text == 'mail') then -?DYNmail;TraditionalFormat। इस तरह, लॉग-रोटेशन केवल एक गैर-समस्या है, कम से कम जब एक फ़ाइल प्रति दिन ठीक है। लॉग के बहुत अधिक मात्रा के लिए (प्रति दिन एकाधिक रोटेशन की आवश्यकता है), वहाँ है $HOUR भी। - Damiano Verzulli


हां, लिनक्स नामक एक उपकरण है logrotate ।


10
2018-06-30 16:36



बस एक छोटा सा सुधार: यह एक सेवा नहीं है, यह एक उपकरण है, आमतौर पर क्रॉन सेवा से चल रहा है। - rvs


यदि लॉग को साफ़ करने का कारण खाली स्थान है, तो आप इसमें लिखने वाले प्रोग्रामों को बाधित किए बिना बिल्ली / dev / null कर सकते हैं। उन्हें कभी न हटाएं! कुछ सॉफ़्टवेयर अगली पुनरारंभ होने तक पूरी तरह से लॉग को रोकने या अनदेखा करके शिकायत कर सकते हैं

cat /dev/null > /path/to/logfile

# to empty all the logs in a directory
for i in /var/log/*; do cat /dev/null > $i; done

8
2018-04-20 00:55



लॉग फ़ाइलों को दोबारा साफ़ करने के लिए: for i in $(find /var/log -type f); do cat /dev/null > $i; done - Iurie Malai


आप इसका भी उपयोग कर सकते हैं ..

truncate /opt/package/logs/*.log --size 0

यहां / opt / package / logs में सभी लॉग फ़ाइलें खाली हो जाएंगी ..


4
2018-06-25 05:32



मैं नहीं देखता कि यह पुराने उत्तरों से बेहतर कैसे हो सकता है। - kasperd
यह वास्तव में एक बहुत अच्छा जवाब है, और वास्तव में केवल एक ही है जो सीधे सवाल का जवाब देता है कि लॉगफाइल को छोटा करने का कोई उचित तरीका है या नहीं। अन्य उत्तरों की तुलना में यह बेहतर है कि यह लॉगफाइल को हटा नहीं देता है, यह सामग्री को सही ढंग से शून्य करता है, इस प्रकार अनुमति त्रुटियों और अनुपलब्ध लॉगफाइल जो इस मामले में घबराहट के लिए कुछ डिमॉन नहीं होते हैं। - hmedia1


लघु और संगत सामग्री ओवरराइटिंग: : > /dest/file

लेकिन वहाँ भी truncate (2) सिस्टम कॉल, और संबंधित उपयोगकर्ता स्पेस उपकरण भी है truncate कई * NIX'es पर।


3
2018-04-20 01:25





अगर आप इसे साफ करने से पहले फ़ाइल रखना चाहते हैं, तो आप यह कर सकते हैं:

cp /var/log/mail.log /var/log/mail.log.1 && echo -n "" > /var/log/mail.log

यदि आप लॉग में किसी विशिष्ट टेक्स्ट या ईमेल की खोज करना चाहते हैं तो आप grep का उपयोग कर सकते हैं। यदि आप मेल उपयोग के बारे में कुछ ग्राफिक्स रखना चाहते हैं तो आप AWStats का उपयोग कर सकते हैं।


0
2018-06-30 16:25





बिल्ली / dev / null> / पथ / से / logfile

मेरे लिये कार्य करता है


0
2017-11-22 02:21





यहां बताया गया है कि मैं इसे कैसे करता हूं, और यह सिर्फ एनजीआईएनएक्स के लिए है, आप इसे सभी लॉग फ़ाइलों पर काम करने के लिए हटा सकते हैं।

# Clear nginx logs.
# @usage delnginxlogs
function delnginxlogs() {
  echo "---------------   Clearing logs... ---------------"

  # Clear logs.
  for i in /var/log/nginx/*; do cat /dev/null > $i; done

  echo "---------------   Deleting .gz log files... ---------------"

  # Delete .gz files.
  find /var/log/nginx -type f -regex ".*\.gz$" -delete

  echo "---------------  DONE: NGINX logs cleared ... ---------------"
}

0
2018-03-25 00:28