খুব বড় লগ ফাইল, আমার কি করা উচিত?


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

আমরা দেখতে পাচ্ছি, প্রথম দুটি হ'ল আপত্তিজনক। এত বড় ফাইল কেন ঘোরানো হয়নি তা নিয়ে আমি মৃদু অবাক হয়েছি।

তাহলে আমার কি করা উচিৎ? কেবল এই ফাইলগুলি মুছুন এবং তারপরে পুনরায় বুট করবেন? বা আরও কিছু বিচক্ষণ পদক্ষেপের জন্য যেতে চান?

আমি উবুন্টু 14.04 ব্যবহার করছি।

আপডেট 1

শুরুতে, সিস্টেমটি বেশ কয়েক মাস পুরাতন। একটি হার্ড ডিস্ক ক্রাশের কয়েকমাস আগে স্ক্র্যাচ থেকে সিস্টেমটি ইনস্টল করতে হয়েছিল।

এখন, এই উত্তরে যেমন পরামর্শ দেওয়া হয়েছে , আমি প্রথমে আক্রমণাত্মক লগ ফাইলগুলি ব্যবহার করে পরীক্ষা করেছিলাম 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

লগ ফাইলগুলি আসলে ঘোরানো হয়। দেখে মনে হচ্ছে বড় বড় মাপগুলি একদিনেই অর্জিত হয়েছে।


2
Log লগ ফাইলগুলিতে এমন কোনও কি আছে যা তারা এত বড় কেন সে সম্পর্কে একটি সূত্র ধার দেয়? মুছুন এবং পুনরায় বুট করুন, তারপরে তারা কোনও ক্ষতিকারক ফ্যাশনে বাড়ছে কিনা তা পর্যবেক্ষণ করুন।
ডগগ্রো

@ Douggro সত্যিই আছে। প্রশ্নে আমার আপডেট দেখুন।
মাসুরুর

উত্তর:


43

কেবল এই ফাইলগুলি মুছুন এবং তারপরে পুনরায় বুট করবেন?

এগুলি খালি করুন তবে ব্যবহার করবেন না rmকারণ আপনি touchএটি পুনরায় তৈরি করতে কমান্ডটি টাইপ করার সময় এটি কোনও ক্র্যাশ হয়ে যেতে পারে ।

সংক্ষিপ্ততম পদ্ধতি:

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

রুট না হলে এটি প্রয়োজন হবে sudo। এউ-তে অন্য উত্তর থেকে নেওয়া ।

আপনি এটি করার আগে। একটি কি tail {logfile}এবং যদি তাদের এত বড় হতে একটি কারণ চেক করুন। এই সিস্টেমটি কয়েক বছরের পুরানো না হলে এর কোনও কারণ থাকতে হবে না এবং সমস্যাটি স্থির করা এটি চালিয়ে যাওয়ার চেয়ে আরও ভাল।

কার্ন.লগ এবং সিসলগ উভয়ই সাধারণত এত বড় হওয়া উচিত নয়। তবে আমি যেমন বলেছি: যদি এই সিস্টেমটি বছরের পর বছর ধরে চলমান থাকে তবে এটি স্বাভাবিক হতে পারে এবং ফাইলগুলি কেবল সাফ করা দরকার।

এবং ভবিষ্যতে এটি এত বড় হওয়ার প্রতিরোধ করতে: সেটআপ logrotate। এটি বেশ সোজা এবং লগ ফাইলটি বড় হয়ে গেলে সংযুক্ত করবে যখন আপনার আকার সেট করে।


অন্য 1 টি জিনিস: আপনি যদি সামগ্রীগুলি মুছতে না চান তবে আপনি ফাইলগুলি টেরিং বা গিজিপ করে সংকুচিত করতে পারেন। এটি আপনার এখন ফাইলগুলির সাথে 10% ফাইল শেষ করবে। এটি এখনও যদি ডিস্কে এটি করার মতো জায়গা থাকে।


3
wtmp: Command not foundএটি কোন প্যাকেজ?
জানুস ট্রয়লসেন

/ var / log / wtmp কোনও কমান্ড নয় লগ ফাইল। আমার উত্তরটি কোথায় ডাব্লুটিএমপি কার্যকর করতে পারে? ;-)
রিনজউইন্ড

3
আমি ভেবেছিলাম >একটি প্রম্পট এবং "লস্টলগ" চেষ্টা করেছিলাম এবং এটি কার্যকর হয়েছে, তাই আমি ধরে নিয়েছি যে আমি সঠিকভাবে বুঝতে পেরেছি: পি
জানুস ট্রয়লসেন

এই সমস্যাটি আমার কাছে ঘটে চলেছে। আমি উবুন্টু 16.04 ব্যবহার করছি। এই কোর্সটি মনে হচ্ছে আপনি কি বলতে পারেন। আগাম ধন্যবাদ!
গায়ান

4
লাস্টলগ, ডাব্লুটিএমপি, ডিপিকিজি.লগ, কার্ন.লগ এবং সিসলগ দিয়ে আপনার কী করা উচিত তা এই উত্তরটি যথাযথভাবে বর্ণনা করে না।
টোর ক্লিংবার্গ

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 পদক্ষেপগুলি alচ্ছিক, তবে কখনও কখনও আপনার পুরানো লগগুলি পরীক্ষা করা প্রয়োজন এবং ব্যাকআপ কখনও কখনও দরকারী। ;-)

  1. .চ্ছিক: লগ ফাইলটি অনুলিপি করুন

    cp -av --backup=numbered file.log file.log.old
    
  2. .চ্ছিক: লগের অনুলিপিটিতে জিজিপ ব্যবহার করুন

    gzip file.log.old
    
  3. পরিষ্কার ফাইলের জন্য / dev / নাল ব্যবহার করুন

    cat /dev/null > file.log
    

এবং আমরা এই লগগুলির জন্য (কেবলমাত্র বেশ কয়েকটি সার্ভারে) লোগ্রোটেট এবং সাপ্তাহিক ক্রোন স্ক্রিপ্ট দ্বারা এক্সিকিউট করি যা জি।


1
এটি উবুন্টু 18.04 এ যাওয়ার উপায়।
Luís de Sousa

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। লগগুলি যখন দ্রুত এইভাবে পূর্ণ হয় (লোগ্রোটেট সত্ত্বেও) কিছু অন্তর্নিহিত ভুল হয় এবং এটি আরও গভীরভাবে খনন করার জন্য উপযুক্ত হয়
সুদীপ ভান্ডারী

4

আমি আজ উবুন্টু 16.04 ইনস্টল করেছি এবং আমি একই সমস্যা লক্ষ্য করেছি। যাইহোক, আমি ব্যস্তবক্স-সিসলগড দিয়ে এটি ঠিক করেছি। হা! আমি সবেমাত্র এই প্যাকেজটি ইনস্টল করেছি এবং সমস্যার সমাধান হয়ে গেছে। :)

$ sudo apt-get install busybox-syslogd

এই প্যাকেজটি ইনস্টল করার পরে, পুনরায় সেট করুন syslogএবং kern.log:

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

আমি আশা করি এই সহজ সমাধানটি আশেপাশের অন্যান্য লোকদের পক্ষে কার্যকর।


3
ঠিক কীভাবে এই প্যাকেজটি করে এবং এই সমাধান কীভাবে কাজ করে?
অ্যারন ফ্রাঙ্ক

আমি এই পোস্টটি সম্পর্কে সন্দেহজনক যেহেতু এই ফাইলগুলিতে একদিনেই বড় হওয়ার কোনও সুযোগ থাকবে না। সুতরাং আমি এই প্রোগ্রামটি সম্পর্কে অন্যের কাছ থেকে না শুনে অবধি থাকব।
এসডসোলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.