লোগ্রোটেট ছাড়াই লগ ফাইলের আকার স্থির রাখুন


13

কোনও নতুন খালি ফাইল দ্বারা আবর্তিত না করে এবং পুরানো ফাইলটি মুছে ফেলা (বা সংরক্ষণাগার) ছাড়াই লগ ফাইলের ফাইলের আকার স্থির রাখার কোনও উপায় আছে কি? উদাহরণস্বরূপ, যদি আমি লগ ফাইলের সর্বাধিক আকার 1MB তে সেট করি তবে ফাইলের আকার সেই সীমা ছাড়িয়ে গেলে তা স্বয়ংক্রিয়ভাবে ক্ল্যাম্প হয়ে যায়, পাঠ্যটি 'লেজ' এ যুক্ত হয় এবং পাঠ্যের প্রাচীনতম অংশটি ফাইলের আকার 1MB রাখতে পপ আউট হয় ।


লোগ্রোটেট ব্যবহার করুন, তারপরেrm -f *.tar.gz.*
মার্কো সেপ্পি

1
আপনি লগটি ঘোরানো বা লোগ্রোটেট ব্যবহার করতে চান না এমন কোনও কারণ রয়েছে কি? ঠিক আপনি কি হতে চান? 1M এ পুরানো লগ সংরক্ষণাগারভুক্ত এবং একটি নতুন শুরু? আপনার প্রশ্নের শুরু শেষের সাথে বেশ উপযুক্ত নয়।
ডেভিড থর্নলে

কি আউট poped মানে?
tshepang

উত্তর:


4

এটি করতে আপনি একটু বাশ স্ক্রিপ্ট লিখতে পারেন। কেবলমাত্র ফাইলটিকে একটি নির্দিষ্ট বাইট গণনাতে টেল করুন এবং ফাইলটি tail -cওভাররাইট করুন।

থেকে man tail:

-c, --bytes=N
              output the last N bytes; alternatively, use +N to  output  bytes
              starting with the Nth of each file

   If  the  first  character of N (the number of bytes or lines) is a `+',
   print beginning with the Nth item from the start of each  file,  other‐
   wise, print the last N items in the file.  N may have a multiplier suf‐
   fix:  b  512,  kB  1000,  K  1024,  MB  1000*1000,  M   1024*1024,   GB
   1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.

3
আমি তুলনামূলকভাবে নিশ্চিত যে একবার আপনি "ফাইলটি ওভাররাইট" করলে নতুন ফাইলটিতে লগিং স্বয়ংক্রিয়ভাবে আরম্ভ হবে না।
স্টিফেন জাজডজেউস্কি

0

আপনার একমাত্র সমাধান হতে পারে আপনার নিজস্ব ব্যবহারকারী ফাইল ফাইল লিখতে বা কোনও বিদ্যমানটিতে অবদান রাখতে। ইউজারস্পেসে ফাইল সিস্টেমের আংশিক তালিকাটি দেখুন

আপনার যদি অবদান রাখার দক্ষতা না থাকে তবে আপনার জন্য এটি যুক্ত করার জন্য কোনও প্রকল্পের প্রচার বা $$$ বা উভয় সরবরাহ করুন।

আমি ইচ্ছা করি আমার এটি করার সময় পেলাম, আমি সবসময় ঠিক এরকম কিছু চাইতাম।


0

আপনি ফিফো ব্যবহার করে অনুরূপ কিছু করতে পারেন যা শূন্য-বাইট আকারের ফাইলের মতো।

তবে মনে রাখবেন যে এই ফাইলটি থেকে যদি কিছু না পড়ে থাকে তবে সিসলগ প্রক্রিয়াটি ব্লক হয়ে যেতে পারে এবং আপনার সমস্ত লগ-ফাইলে লেখা বন্ধ করে দেবে। আমি নিশ্চিত নই যে উবুন্টু / সেন্টোসের নতুন সংস্করণগুলির সাথে এই আচরণটি পরিবর্তন করা হয়েছে কিনা।

একটি উদাহরণ এখানে

অন্য উদাহরণের জন্য, এর মতো কিছু চেষ্টা করুন।

আপনার ফিফো করুন:

sudo mkfifo /var/log/everything.fifo

এবং এটি (r) syslog.conf এ যুক্ত করুন, তারপরে সিসলগ পুনরায় আরম্ভ করুন:

*.*     |/var/log/everything.fifo

তারপরে একটি উইন্ডো থেকে ফিফোটি দেখুন:

cat /var/log/everything.fifo

এবং অন্য উইন্ডোতে সিসলগে কিছু জিনিস প্রেরণ করুন:

logger Test1
logger Test2
logger Test3

catউপরের আউটপুটে আপনার "টেস্ট *" লাইনগুলি দেখতে হবে ।

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

grep -vi "kernel: .* on wan" /var/log/everything.fifo

0

এখানে আমার দ্বিতীয় উত্তর। এটি একটি সুন্দর হ্যাকিশ।

বারবার কার্যকর করতে ঘড়ির (1) ব্যবহার করুন ( tail --bytes=1024লগফাইলে সর্বশেষ 1024 বাইট, উত্তরটির জন্য @jjclarkson কে ধন্যবাদ)।

watch --no-title tail --bytes=1024 /var/log/messages >/tmp/messages.watch

এবং তারপরে ফাইলটি দেখুন:

less --raw-control-chars /tmp/messages.watch

watchলুপের মাঝে এবং পার্থক্যটি হ'ল watchকেবলমাত্র /tmp/messages.Watch আপডেট হবে যদি / var / লগ / বার্তাগুলিতে পরিবর্তন হয়।

while true; do
    tail --bytes=1024 /var/log/messages > /tmp/messages.watch
    sleep 1
done

এবং ভাল, আমি অনুমান করি যে আপনি testকিছুক্ষণের লুপটিতে কিছুটা রেখে দিতে পারেন যাতে লেজটি কেবল তখনই কার্যকর করা হয় যদি / var / লগ / বার্তাগুলি আপডেট করা হয় তবে আমি এখনই এটি খুঁজে পাব না।


0
 * ছাঁটাই - বিভক্ত ফাইলের তালিকার শীর্ষে ক্লিপগুলি
 * ফাইল / ইত্যাদি / ডিফল্ট / ছাঁটাই। পর্যায়ক্রমে চালানোর জন্য নকশাকৃত
 ক্রোন থেকে, ধারণাটি হ'ল স্বয়ংক্রিয়ভাবে লগটি সংক্ষিপ্ত করে নেওয়া উচিত
 * ফাইলগুলি যা চিরদিনের জন্য বৃদ্ধি পায়। এই ফাইলটির একটি তালিকা রয়েছে
 * ফাইল (পুরো পথের নাম) এবং যেগুলি ব্লকের সংখ্যা
 * ধরে রাখতে হবে। কিছু বিচক্ষণতা ধরে রাখতে, ছাঁটাই করা হবে
 * পরবর্তী নিউলাইনের পরে ফাইলটি ক্লিপ করুন। ফাইল
 * / ইত্যাদি / ডিফল্ট / ছাঁটাই এর মতো দেখতে পাওয়া উচিত:
 *
 * / usr / ad / aculog 10
 * /usr/adm/leo.log 5
 * / usr / ad / বার্তা 200
 * / ইউএসআর / অ্যাডম / সুপার_লগ 5
 *
 * ছাঁটাইয়ের জন্য ইনফোসেক্সে ক্রন্টব এন্ট্রি দেখে মনে হচ্ছে:
 *
 * 0 5 * * * / ইত্যাদি / ছাঁটাই> / ওসআর / এডিএম / প্রুন.লগ 2> & 1
 *
 * এর সাথে সংকলন করুন: সিসি-ও-প্রুন prune.c
 *
 * নিম্নলিখিত সংজ্ঞাগুলি আপনার স্বাদ অনুসারে সামঞ্জস্য করা যেতে পারে
 * এবং আপনার সিস্টেমের ব্লকের আকার।
 *
 * রে ডেভিস ইনফোসক্স! মৌমাছি 09/25/85

https://groups.google.com/group/mod.sources/browse_thread/thread/b2136b3ab7e924e/f785b37c218bb576?hl=en&ie=UTF-8&q=prune+log+file&pli=1

অনেক (সর্বাধিক? সব?) ডেমনগুলি এইচইউপি সিগন্যাল প্রেরণ করা হলে তাদের লগ ফাইলগুলি পুনরায় খুলবে (উদাহরণস্বরূপ একই ক্রোন জব দ্বারা যা ছাঁটাই চালায়)


0

আমি নিশ্চিত যে আসল পোস্টারটি 8 বছর পরে একটি সমাধান পেয়েছে। অন্যদের জন্য এখানে অন্য একটি যা এই থ্রেডটি পড়তে পারে ...

কার্টেল একটি প্রোগ্রামের আউটপুটটির আকারকে সীমাবদ্ধ করে এবং নিম্নলিখিত কমান্ডের সাহায্যে আউটপুটের শেষ 200MB সংরক্ষণ করে:

রান_প্রগ্রাম | কার্টেল-এস 200 এম myprogram.log

https://github.com/Comcast/Infinite-File-Curtailer

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