লগগুলি সাফ করার কোনও সঠিক উপায় আছে?


64

আমি ভাবছিলাম যে সাধারণভাবে লগগুলি সাফ করার কোনও সঠিক উপায় আছে কিনা?

আমি উবুন্টুতে নতুন এবং আমি পোস্টফিক্স সেটআপ করার চেষ্টা করছি। লগ ইন প্রশ্ন হয় /var/log/mail.log। আমি ভাবছিলাম যে এটিকে পরিষ্কার করার কোনও সঠিক উপায় ছিল, আমার মধ্যে না গিয়ে এবং সমস্ত লাইন মুছে ফেলা এবং এটি সংরক্ষণ করার চেয়ে। আমি দেখতে পাই যে লগ সাফ করার পরে এবং এটি সংরক্ষণ করার পরে মাঝে মাঝে ত্রুটিগুলি এতে লেখা হয় না।

পার্শ্ব দ্রষ্টব্য: পোস্টফিক্স সেট আপ করতে আমার সমস্যা হচ্ছে এবং লগগুলি পড়ার জন্য আমার পক্ষে আরও সহজ করার চেষ্টা করছি এটি আশা করে যে এটি পুরোপুরি স্ক্রোল না করে বরং আমাকে সাহায্য করতে পারে।


2
আপনি যদি কেবল ফাইলটির শেষ দেখতে চান তবে লেজটি আপনার বন্ধু। শেষ 5 টি লাইন প্রদর্শন করতে লেজ /var/log/mail.log। টেল -f /var/log/mail.log ফাইলের শেষে লেখা সমস্ত লাইন দেখতে।
ব্যবহারকারী 9517

উত্তর:


79

তুমি ব্যবহার করতে পার:

> /var/log/mail.log

এটি আপনাকে ফাইল সম্পাদনা না করে লগ কেটে যাবে। স্থানটি ফিরে পাওয়ার এটি একটি নির্ভরযোগ্য উপায়। কিছু সময় লোকেরা লগটিতে আরএম ব্যবহার করার পরে ফাইলনাম পুনরায় তৈরি করার ভুল করে, যদি অন্য কোনও প্রক্রিয়াতে ফাইলটি খোলা থাকে তবে প্রক্রিয়াটি তার হ্যান্ডেলটি বন্ধ না করা পর্যন্ত আপনি আর জায়গা ফিরে পাবেন না এবং আপনি এর অনুমতিগুলি বিশৃঙ্খলা করতে পারবেন।

আপনি যদি লগের বিষয়বস্তুগুলি দেখছেন তবে আপনি tailকমান্ডটি ব্যবহার করতে পছন্দ করতে পারেন :

tail -f /var/log/mail.log

Ctrl-C টেইলিং বন্ধ করবে।


2
/bin/csh(ফ্রিবিএসডি-এর পক্ষে সাধারণ) "অবৈধ নাল কমান্ড" দিয়ে এটিকে জামিন দেয়, ইতিমধ্যে zsh(এর জন্য জনপ্রিয় প্রতিস্থাপন bash) ইওএফ অপেক্ষা করবে। দেখুন serverfault.com/a/381380/67675
poige

আমি কিভাবে এটি শিডিউল করতে পারি? নির্বাণ >নিম্নলিখিতরূপে crontab পরিবর্তন সিনট্যাক্স যেমন যেমন একটি বাক্য গঠন স্বীকৃতি নাও হতে পারে চলছে না
ishandutta2007

26

হ্যাঁ, একটি সঠিক উপায় আছে: আপনি লগগুলি একেবারেই সাফ করবেন না । আপনি তাদের ঘোরান । আবর্তনের সাথে পূর্ববর্তী এন লগ ফাইলগুলির সাথে এন সম্পর্কিত ফাইলের নামের একটি সেটের নীচে রাখা একই নামের অধীনে একটি নতুন ফাইলে লগ আউটপুট পরিবর্তন করা জড়িত।

লগগুলি কীভাবে ঘোরানো হয় তার উপর নির্ভর করে কোনও একটি প্রথম স্থানে কীভাবে লিখছেন। এটি একটি অবহেলিত বিন্দু। এখানে কিছু উত্তর কমপক্ষে এটি স্পর্শ করে উল্লেখ করেছে যে কিছু লগিং প্রোগ্রামগুলি লগ ফাইলের জন্য একটি উন্মুক্ত ফাইল বর্ণনাকারী রাখে, সুতরাং কেবল ফাইলটি মুছে ফেলা স্থান খালি করে না, এমনকি প্রকৃতপক্ষে এমনকি তাজা লগ ফাইলটিতে আউটপুট পরিবর্তন করতে পারে।

লগ ফাইলটি লেখার প্রোগ্রামটি যদি প্যাকেজ multilogথেকে হয়daemontools , উদাহরণস্বরূপ, তবে আপনি লগগুলি মোটেও ঘোরানোর জন্য কিছু করবেন না - কোনও ম্যানুয়াল স্ক্রিপ্ট নেই, কোনও cronচাকরি নেই। সহজভাবে বলুন multilogযে লগ আউটপুট কোনও ডিরেক্টরিতে হয় এবং এটি স্বয়ংক্রিয়ভাবে সেই ডিরেক্টরিতে এন লগ ফাইলগুলির একটি স্বয়ংক্রিয়ভাবে ঘোরানো এবং আকার-ক্যাপযুক্ত সেট বজায় রাখে।

যদি লগ ফাইলগুলি লেখার প্রোগ্রামটি প্যাকেজ svlogdথেকে হয়runit , অন্য উদাহরণের জন্য, তবে অনেকগুলি একই প্রযোজ্য। আপনি কোনও ডিরেক্টরি ডিরেক্টরিতে বিন্দু বাদে কিছু করতে পারবেন না। এটি স্বয়ংক্রিয়ভাবে সেই ডিরেক্টরিতে এন লগ ফাইলগুলির একটি স্বয়ংক্রিয়ভাবে ঘোরানো এবং আকার-ক্যাপড সেটটি বজায় রাখবে।

আপনি যদি rsyslogলগ ফাইল লেখার জন্য ব্যবহার করছেন তবে লগিং প্রোগ্রামটি নির্দিষ্ট আকারে পৌঁছানোর পরে একটি স্ক্রিপ্ট চালানোর জন্য লগিং প্রোগ্রামটি বলা যেতে পারে । মোট স্ক্রিপ্টের সীমাবদ্ধতার উপর ভিত্তি করে লগ ফাইলটি পুনরায় নামকরণ এবং পুরানো লগ ফাইলগুলি মুছতে আপনাকে স্ক্রিপ্টের মাংস লিখতে হবে, তবে অন্তত লগিং প্রোগ্রামটি ফাইলটি বন্ধ করে দিয়েছে এবং লগ লিখনকে বিরতি দিয়েছে যখন এটি হচ্ছে।

syslogdলগগুলি ঘোরানোর প্রাচীন পদ্ধতিটি এখনও সিসলগ-এনজি এর মতো লগিং প্রোগ্রামগুলির দ্বারা প্রত্যাশিত এবং সরঞ্জামগুলির দ্বারা অনুকরণীয় যেমন এখানে অন্য উত্তরে logrotateউল্লিখিত রয়েছে djangofan, এটি কিছুটা অবাস্তব। একটি cronএমন একটি কাজ চালায় যা পর্যায়ক্রমে লগ ফাইলগুলির নাম পরিবর্তন করে, এবং লগিং ডেমন পুনরায় চালু করে (এটি অধীন চলমান ডিমন সুপারভাইজারকে ব্যবহার করে)। এটির সাথে অবশ্যই সমস্যাটি হ'ল এটি সামগ্রিক আকারের ক্যাপটি প্রয়োগ করে না। ধীর সপ্তাহে কেউ এন খুব ছোট দৈনিক লগ ফাইলগুলি পেতে পারে, যদিও ব্যস্ততার দিনগুলিতে আকারের সীমা ছাড়িয়ে খুব ভাল 1 টি লগ ফাইল পাওয়া যায়।

এই কেন মত পরে এবং ভাল টুলস multilogএবং svlogdফাইল সাইজ কনফিগারেশন অপশন আছে এবং আসলে পরীক্ষা লগ ফাইল নিজেদের আয়তন, অবশ্যই। বিশ্ব শিখেছে যে cronকাজের সাথে একটি সময়সূচীতে লগগুলি , বা এমনকি একটি ডেমনও পোলিংয়েরlogrotate ফলে আকারটি ভুল হওয়ার জন্য উইন্ডো ছেড়ে যায় এবং এই চেকগুলির যথাযথ জায়গা রয়েছে এবং তাই প্রশাসক-সংজ্ঞায়িত আকারের ক্যাপগুলি কঠোরভাবে প্রয়োগ করে যাতে একটি লগ ফাইলগুলি যে পার্টিশনটি চালু রয়েছে তা কখনই গ্রাস করে না, প্রোগ্রামে আসলে ফাইলগুলি প্রথম স্থানে লিখতে থাকে।


আরএসস্লগ হিসাবে, এটি সহজেই কনফিগার করা যায় যাতে "প্যাটার্ন" দ্বারা বর্ণিত ফাইলের উপর নির্ভর করা যায়, উদাহরণস্বরূপ, বছর, মাস এবং দিন and এটি template(name="DYNmail" type="string" string="/var/log/%$YEAR%/%$MONTH%/%$DAY%/mail.log")দিকনির্দেশনার মতোই সহজ , এর পরে ক if ($syslogfacility-text == 'mail') then -?DYNmail;TraditionalFormat। এইভাবে, লগ-রোটেশনটি কেবল একটি অ-সমস্যা, কমপক্ষে যখন প্রতিদিন কোনও একক ফাইল ঠিক থাকে। খুব উচ্চ মাত্রার লগের জন্য (প্রতিদিন একাধিক রোটেশন প্রয়োজন), $HOURএছাড়াও রয়েছে।
দামিয়ানো ভেরজুলি

13

আপনি এটি ব্যবহার করতে পারেন ..

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

এখানে / opt / প্যাকেজ / লগগুলিতে সমস্ত লগ ফাইল খালি হয়ে যাবে ..


আমি দেখতে পাচ্ছি না যে এটি পুরানো উত্তরগুলির চেয়ে আরও ভাল কী হতে পারে।
ক্যাস্পারড

4
এটি আসলে খুব ভাল উত্তর, এবং লগ-ফাইলে কাটানোর কোনও সঠিক উপায় আছে কিনা সেই প্রশ্নের সরাসরি উত্তর কেবলমাত্র একমাত্র এটিই। অন্যান্য উত্তরগুলির তুলনায় এটি কীভাবে ভাল যে এটি লগফিলটি মুছে ফেলতে পারে না, এটি বিষয়বস্তুগুলি সঠিকভাবে জিরো করে, সুতরাং অনুমতি ত্রুটি এবং অনুপস্থিত লগফাইলেগুলি যা কিছু ডেমোনকে আতঙ্কিত করে তোলে এই ক্ষেত্রে ঘটবে না।
hmedia1

11

হ্যাঁ, লিনাক্সের জন্য লোগ্রোটেট নামে একটি সরঞ্জাম রয়েছে


9
কেবলমাত্র একটি ছোট সংশোধন: এটি কোনও পরিষেবা নয়, এটি একটি সরঞ্জাম, সাধারণত ক্রোন পরিষেবা থেকে চলমান।
rvs

10

আপনি লগটি পরিষ্কার করার কারণটি যদি স্থান খালি হয় তবে আপনি এতে প্রোগ্রাম লিখতে বাধা না দিয়েই তাদের কাছে বিড়াল / দেব / নাল করতে পারেন। এগুলি কখনই মুছবেন না! কিছু সফ্টওয়্যার পরবর্তী পুনঃসূচনা হওয়া অবধি লগ সম্পূর্ণরূপে কাজ করা বা উপেক্ষা করে অভিযোগ করতে পারে

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

3
পুনরাবৃত্তভাবে লগ ফাইলগুলি সাফ করার জন্য:for i in $(find /var/log -type f); do cat /dev/null > $i; done
ইউরি মালাই

4

সংক্ষিপ্ত এবং সামঞ্জস্যপূর্ণ সামগ্রী ওভাররাইটিং: : > /dest/file

তবে truncateঅনেকগুলি * NIX'es এ ট্রান্সকেট (2) সিস্টেম কল এবং সংশ্লিষ্ট ইউজারস্পেস সরঞ্জাম রয়েছে tool


1

আপনি যদি ফাইলটি পরিষ্কার করার আগে ধরে রাখতে চান তবে আপনি এটি করতে পারেন:

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

আপনি যদি লগতে কোনও নির্দিষ্ট পাঠ্য বা ইমেলের সন্ধান করতে চান তবে আপনি গ্রেপ ব্যবহার করতে পারেন। আপনি যদি মেল ব্যবহার সম্পর্কে কিছু গ্রাফিক রাখতে চান তবে আপনি অ্যাডাব্লু স্ট্যাটস ব্যবহার করতে পারেন।


1

আমি এটি কীভাবে করব তা এখানে and

# 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 ... ---------------"
}

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