লিনাক্সে ফ্রি-স্পেস চালিত লগ রোটেশন?


8

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

তবে, স্ট্যান্ডার্ড লোগ্রোটেট আমাদের একটি নির্দিষ্ট সময়কাল + ঘূর্ণনের সংখ্যা নির্দিষ্ট করতে চায়। এমন কি কিছু আছে যা আমাদের "দৈনিক ঘোরানো, এবং কেবলমাত্র 5% স্থান ফাঁকা না করা অবধি আপনার পছন্দ মতো ইতিহাস রাখি" বলে দেবে?

প্ল্যাটফর্মটি রেডহ্যাট লিনাক্স।


1
ডিস্ক পূর্ণ না হওয়া পর্যন্ত লগগুলি রাখা শারীরিক পরিবেশে প্রয়োগ করা যেতে পারে, তবে আমরা বেশিরভাগ ভার্চুয়াল সার্ভার এবং ক্লাউডে চলে যাওয়ায় ফাইল সিস্টেমের আকার কম ব্যয়ের পক্ষে যতটা সম্ভব ছোট হওয়া উচিত। এই ক্ষেত্রে, আপনি ধরে রাখার নীতি নির্ধারণ করতে এড়াতে পারবেন না।
jfg956

উত্তর:


9

আপনি সম্ভবত শেল স্ক্রিপ্ট কল করতে ফার্স্টঅ্যাকশন বা ল্যাকটিশনের দিকনির্দেশগুলি ব্যবহার করতে পারেন যা ডিস্ক ফ্রি স্পেসের জন্য পরীক্ষা করে এবং তারপরে প্রাচীনতম ফাইলগুলিতে মুছুন run

   firstaction/endscript
          The lines between firstaction and endscript (both of which must appear on lines by themselves) are
          executed (using /bin/sh) once before all log files that match the wildcarded pattern are  rotated,
          before  prerotate  script  is  run  and  only if at least one log will actually be rotated.  These
          directives may only appear inside a log file definition. Whole pattern is passed to the script  as
          first  argument.  If  the script exits with error, no further processing is done. See also lastac-
          tion.

হালনাগাদ:

আপনি যে ধরণের স্ক্রিপ্ট চালাতে পারেন সে সম্পর্কে এখানে স্ট্যাকওভারফ্লো পোস্ট রয়েছে:

/programming/7523059/remove-oldest-file-in-repository


1

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


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

আহ ঠিক আছে, যদি তাদের একমাত্র এফএস থাকে তবে এটি পরিষ্কার করার জন্য একটি স্ক্রিপ্ট তৈরি করা সহজ করে তোলে, ডিএইচ / এফএস এবং% ব্যবহার করার জন্য জঞ্জাল বা কাটা ব্যবহার করে, এবং সেই চিত্রের ভিত্তিতে, আপনি এক্সিকিউটিভের সাথে একটি অনুসন্ধান বন্ধ করতে পারেন RM। আমি প্রায়শই কোনও স্ক্রিপ্ট লিখি না এবং ক্রন্টবায় নিজেই একটি ওয়ান-লাইনার রাখি।
johnshen64

0

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


0

@ সিজেসি পরামর্শ হিসাবে, আপনি প্রথমতা ব্যবহার করতে পারেন। এই উদাহরণটি দেখুন:

/mnt/user/logs/*.log  /mnt/user/logs/*/*.log {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        notifempty
        su root www-data
        create 760 root www-data
        firstaction
          for file in `find  -type f -size +1024M`; do
              percent=`df -h | grep /mnt/user | awk '{print $5}' | sed 's/%//'`
              if [ $percent -gt 50 ]; then 
                  echo "Removed $file" >> /mnt/user/logs/logrotate.log
                  rm $file
              fi
           done;
        endscript
}

এই উদাহরণে আপনি / mnt / ব্যবহারকারীর পার্টিশন থেকে 1GB এর চেয়ে বড় ফাইলগুলি সরিয়ে ফেললেন যদি পার্টিশনের ব্যবহৃত স্থানটি 50% এর বেশি হয় ।

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