बहुत बड़ी लॉग फाइलें, मुझे क्या करना चाहिए?


36

( यह प्रश्न एक समान समस्या से संबंधित है, लेकिन यह एक घुमाए गए लॉग फ़ाइल के बारे में बात करता है।)

आज मुझे बहुत कम /varजगह के बारे में एक सिस्टम संदेश मिला है।

हमेशा की तरह मैंने लाइन में कमांड्स को अंजाम दिया, sudo apt-get cleanजिससे परिदृश्य में थोड़ा सुधार हुआ। फिर मैंने रोटेट की गई लॉग फ़ाइलों को हटा दिया जो फिर से बहुत कम सुधार प्रदान करती हैं।

जांच करने पर मैंने पाया कि कुछ लॉग फाइलें /var/logबहुत बड़ी हो गई हैं। विशिष्ट होने के लिए, ls -lSh /var/logदेता है,

total 28G
-rw-r----- 1 syslog            adm      14G Aug 23 21:56 kern.log
-rw-r----- 1 syslog            adm      14G Aug 23 21:56 syslog
-rw-rw-r-- 1 root              utmp    390K Aug 23 21:47 wtmp
-rw-r--r-- 1 root              root    287K Aug 23 21:42 dpkg.log
-rw-rw-r-- 1 root              utmp    287K Aug 23 20:43 lastlog

जैसा कि हम देख सकते हैं, पहले दो अपमानजनक हैं। मैं हल्के से हैरान हूं कि इतनी बड़ी फाइलें क्यों नहीं घुमाई गईं।

तो मुझे क्या करना चाहिए? बस इन फ़ाइलों को हटा दें और फिर रिबूट करें? या कुछ और विवेकपूर्ण कदम उठाए?

मैं Ubuntu 14.04 का उपयोग कर रहा हूं।

अद्यतन १

शुरू करने के लिए, सिस्टम केवल कई महीने पुराना है। मुझे हार्ड डिस्क क्रैश के बाद कुछ महीने पहले स्क्रैच से सिस्टम को स्थापित करना था।

अब, जैसा कि इस उत्तर में सलाह दी गई है , मैंने पहली बार उपयोग की जाने वाली लॉग फ़ाइलों की जाँच की tail, इसमें कोई आश्चर्य की बात नहीं है। फिर, गहन निरीक्षण के लिए, मैंने इस स्क्रिप्ट को उसी उत्तर से निष्पादित किया ।

for log in /var/log/{syslog,kern.log}; do 
  echo "${log} :"
  sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
  | sort | uniq -c | sort -hr | head -10
done

प्रक्रिया में कई घंटे लग गए। आउटपुट की लाइन में था,

/var/log/syslog :
71209229  Rafid-Hamiz-Dell kernel:  sda3: rw=1, want=7638104968240336200, limit=1681522688
53929977  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device
17280298  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device
   1639  Rafid-Hamiz-Dell kernel:  EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 54763121030042024)
       <snipped>

/var/log/kern.log.1 :
71210257  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device
71209212  Rafid-Hamiz-Dell kernel:  sda3: rw=1, want=7638104968240336200, limit=1681522688
   1639  Rafid-Hamiz-Dell kernel:  EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 954763121030042024)

( /dev/sda3मेरी घर निर्देशिका है। जैसा कि हम पा सकते हैं,

lsblk /dev/sda
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk 
├─sda1   8:1    0 122.1G  0 part /
├─sda2   8:2    0   7.6G  0 part [SWAP]
└─sda3   8:3    0 801.8G  0 part /home

एक प्रक्रिया सीमा से परे क्यों लिखना चाहेगी यह वास्तव में मेरी समझ के दायरे से बाहर है। शायद मैं इस मंच में एक अलग सवाल पूछना चाहता हूँ अगर यह सिस्टम अपडेट के बाद भी जारी रहता है। "

फिर, से इस जवाब (आप देखना चाहें इस बारे में बेहतर समझ के लिए), मैं मार डाला,

sudo su -
> kern.log
> syslog

अब, इन फ़ाइलों का आकार शून्य है। रिबूट से पहले और बाद में सिस्टम ठीक चल रहा है।

मैं अगले कुछ दिनों में इन फाइलों (दूसरों के साथ) को देखूंगा और वापस रिपोर्ट करुंगा कि क्या
उन्हें आउट-ऑफ-लाइन व्यवहार करना चाहिए ।

अंतिम नोट के रूप में, दोनों ऑफेंडिंग फाइलें ( kern.logऔर syslog), शो के grepअंदर फाइलों (निरीक्षण) के निरीक्षण के रूप में, घुमाए जाने के लिए सेट हैं /etc/logrotate.d/

अद्यतन २

लॉग फ़ाइलों को वास्तव में घुमाया जाता है। लगता है कि एक ही दिन में बड़े आकार प्राप्त हुए।


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

@douggro वास्तव में वहाँ हैं। कृपया प्रश्न के लिए मेरा अपडेट देखें।
मसरूर

जवाबों:


43

बस इन फ़ाइलों को हटा दें और फिर रिबूट करें?

नहीं, उन्हें खाली करें लेकिन उपयोग न करें rmक्योंकि यह कुछ को दुर्घटनाग्रस्त कर सकता है जबकि आप touchइसे फिर से बनाने के लिए कमांड टाइप कर रहे हैं ।

सबसे छोटा तरीका:

cd /var/log
sudo su
> lastlog
> wtmp
> dpkg.log 
> kern.log
> syslog
exit

यदि जड़ नहीं है तो इसकी आवश्यकता होगी sudo। एयू पर एक और जवाब से लिया गया ।

इससे पहले कि आप क्या करते हैं। एक करें tail {logfile}और जांचें कि क्या उनके लिए इतना बड़ा होने का कोई कारण है। जब तक यह प्रणाली कई साल पुरानी है तब तक इसके लिए कोई कारण नहीं होना चाहिए और समस्या को ठीक करने से बेहतर है कि इस पर जाने दिया जाए।

Kern.log और syslog दोनों को आमतौर पर उतना बड़ा नहीं होना चाहिए। लेकिन जैसा मैंने कहा: अगर यह प्रणाली साल और साल के लिए चल रही है तो यह सामान्य हो सकती है और फाइलों को केवल साफ करने की आवश्यकता है।

और भविष्य में इसे बड़ा बनने से रोकने के लिए: सेटअप logrotate। यह बहुत सीधा है और लॉगफ़ाइल को संकुचित कर देगा जब यह बड़ा हो जाता है तो एक आकार जिसे आपने इसे सेट किया है।


1 अन्य बात: यदि आप उन सामग्रियों को हटाना नहीं चाहते हैं, जिन्हें आप फ़ाइलों को टारगेट करके या उन्हें जिप करके संपीड़ित कर सकते हैं। अब आपके पास 10% फाइलें होंगी जो अब वे हैं। यदि ऐसा करने के लिए डिस्क पर अभी भी जगह है।


3
wtmp: Command not foundयह कौन सा पैकेज है?
Janus Troelsen

/ var / log / wtmp एक कमांड नहीं बल्कि लॉग फाइल है। मेरे उत्तर में कहां है कि आप wtmp निष्पादित कर सकते हैं? ;-)
रिनविंड जूल

3
मैंने सोचा >था कि एक संकेत था और "लास्टलॉग" की कोशिश की और यह काम किया, इसलिए मैंने मान लिया कि मैं सही ढंग से समझ गया हूं: पी
जानूस ट्रॉल्सन

यह मुद्दा मेरे साथ बना रहता है। मैं ubuntu 16.04 का उपयोग कर रहा हूं। क्या आप बता सकते हैं कि यह कैसा लगता है। अग्रिम में धन्यवाद!
गायन

4
यह उत्तर पर्याप्त रूप से यह वर्णन नहीं करता है कि आपको लास्ट, wtmp, dpkg.log, kern.log और syslog के साथ क्या करना चाहिए।
टोर क्लिंगबर्ग

20

यह शायद लॉग (ओं) को भरने की कोशिश करने के लायक है - या तो बस उन्हें नेत्रहीन lessया tailकमांड का उपयोग करके जांचना

tail -n 100 /var/log/syslog

या अगर आपत्तिजनक रेखाएं बहुत गहराई से दबी हुई हैं तो आसानी से देख सकती हैं कि क्या कुछ हो रहा है

for log in /var/log/{dmesg,syslog,kern.log}; do 
  echo "${log} :"
  sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
  | sort | uniq -c | sort -hr | head -10
done

(ध्यान दें: इसमें कुछ समय लग सकता है, ऐसी बड़ी फाइलें दी गई हैं) जो टाइमस्टैम्प को बंद करने का प्रयास करेगा और फिर सबसे अधिक बार होने वाले संदेशों की गणना करेगा।


10

क्लीन सिस्टम लॉग फाइल के लिए मेरा तरीका यह है। चरण 1 और 2 वैकल्पिक हैं, लेकिन कभी-कभी आपको पुराने लॉग की जांच करने की आवश्यकता होती है और बैकअप कभी-कभी उपयोगी होता है। ;-)

  1. वैकल्पिक: लॉग फ़ाइल की प्रतिलिपि बनाएँ

    cp -av --backup=numbered file.log file.log.old
    
  2. वैकल्पिक: लॉग की प्रतिलिपि पर Gzip का उपयोग करें

    gzip file.log.old
    
  3. स्वच्छ फ़ाइल के लिए / dev / null का उपयोग करें

    cat /dev/null > file.log
    

और हम इस लॉग (केवल कई सर्वरों) पर लॉग इन करते हैं और क्रोन स्क्रिप्ट द्वारा साप्ताहिक निष्पादन करते हैं, जो * .1 (या अगले घुमाए हुए) के साथ सभी फ़ाइलों को gzip द्वारा संपीड़ित करता है।


1
यह उबंटू 18.04 पर जाने का रास्ता है।
लुइस डी सूसा

यह स्वीकृत उत्तर होना चाहिए। जब लॉग तेजी से भर रहे हैं जैसे (लॉग्रोट के बावजूद) कुछ स्वाभाविक रूप से गलत है और इसमें गहरी खुदाई करने लायक है
सुदीप भंडारी

4

मैंने आज Ubuntu 16.04 स्थापित किया और मैंने उसी समस्या पर ध्यान दिया। हालाँकि, मैंने इसे बिजीबॉक्स-सिसलॉग के साथ तय किया। हाँ! मैंने अभी पैकेज स्थापित किया है और समस्या हल हो गई है। :)

$ sudo apt-get install busybox-syslogd

उस पैकेज को स्थापित करने के बाद, रीसेट करें syslogऔर kern.log:

sudo tee /var/log/syslog /var/log/kern.log </dev/null

मुझे उम्मीद है कि यह सरल समाधान आसपास के अन्य लोगों के लिए उपयोगी है।


3
क्या, वास्तव में, यह पैकेज क्या करता है, और यह समाधान कैसे काम करता है?
आरोन फ्रेंके

मैं इस पोस्ट के बारे में संदिग्ध हूं क्योंकि उन फाइलों को एक ही दिन में बड़ा होने का मौका नहीं मिलेगा। इसलिए जब तक मैं इस कार्यक्रम के बारे में दूसरों से नहीं सुनूंगा, तब तक इसे रोकूंगा।
एसडीसोल्डर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.