শেল স্ক্রিপ্টে লোগ্রোটেট কীভাবে প্রয়োগ করা যায়


12

test.sh

#!/bin/bash
echo "Hello World"

test2.sh

#!/bin/bash
while true
do
    sh test.sh >> /script_logs/test.log &
done

লগ ফাইলের আকার নিয়ন্ত্রণ করতে আমি লোগ্রোটেট প্রয়োগ করতে চাই, সুতরাং লোগ্রোটেট কীভাবে বাস্তবায়ন করব, যদি পরিস্থিতি উপরের মতো হয়?

উত্তর:


11
#!/bin/bash 
touch /script_logs/test.log
MaxFileSize=2048
while true
do
     sh test.sh >> /script_logs/test.log
#Get size in bytes** 
    file_size=`du -b /script_logs/test.log | tr -s '\t' ' ' | cut -d' ' -f1`
    if [ $file_size -gt $MaxFileSize ];then   
        timestamp=`date +%s`
        mv /script_logs/test.log /script_logs/test.log.$timestamp
        touch /script_logs/test.log
    fi

done

আমি "&" সরিয়েছি কারণ এটি সমস্যার কারণ হতে পারে।


@ ভীরেন্দ্রকে আপনার লগের ভিতরে লগগুলি ঘুরিয়ে দেওয়ার যুক্তিটি রাখা দরকার কারণ আপনি অসীম লুপটি চালাচ্ছেন ..
কৌতুহল

@ বীরেন্দ্র আমরা আমাদের আগের পোস্টটিতে একটি ত্রুটি ছিল .. "এমভি" কোনও নতুন ফাইল তৈরি করবে না তবে আপনি আপনার প্রয়োজনীয়তা অনুযায়ী স্ক্রিপ্ট পরিবর্তন করতে পারবেন।
জানতে আগ্রহী

সুতরাং cpএবং এর পরিবর্তে mv, আমি কি লগ ফাইলটি সরিয়ে ফেলতে পারি, তারপরে কি এটি একই নাম দিয়ে নতুন লগ ফাইলটি তৈরি করতে পারে? )
বীরেন্দ্র কাকুমানু

আপনার >>লগ ফাইল যুক্ত করতে ব্যবহার করা উচিত , >এটি বারবার ওভাররাইট করে।
alcik

যদি আমি ব্যবহার করি >, আমি পাচ্ছি tail: test.log: file truncated Hello World!.... আমি যদি ব্যবহার >>করি তবে সঠিক লগ বার্তা পাচ্ছি, তবে ফাইলের আকার বাড়ছে। কোনও শর্ত শর্ত যাচাই করে না ... ;-(
বীরেন্দ্র কাকুমানু

24

কিভাবে ব্যবহার সম্পর্কে savelog?

এটি ডেবিয়ান এবং আরএইচ-তে উপলব্ধ এবং অন্য যে কোনও লিনাক্স ডিস্ট্রো সম্পর্কে আমি জানি pretty এটি একটি / বিন / শ শেল স্ক্রিপ্ট, সুতরাং অন্য কোনও ইউনিক্সে চালানো উচিত।

যেমন test.logচালানোর জন্য কিছু লেখার আগে savelog -n -c 7 test.log। এটি টেস্ট.লগের 7 অতি সাম্প্রতিক অ-খালি সংস্করণ রাখবে। ডিফল্টরূপে, এটি ঘোরানো লগগুলি সংকোচিত করবে (তবে এটির সাথে এটি অক্ষম করা যেতে পারে -l)।

আপনার যদি প্রয়োজন হয় তবে আপনি এটি নির্দিষ্ট আকারের চেয়ে বেশি হলে এটির আকার test.logএবং savelogএটি পরীক্ষা করতে পারেন ।


কোন প্যাকেজটিতে এডাব্লুএস লিনাক্স রয়েছে (সেন্টোসের কাছাকাছি, আমি বিশ্বাস করি)? ডিফল্ট ইনস্টলেশনটিতে সেভলগ নেই। আমি এটি
ডিম

সেভলগ আরএইচইএলে পাওয়া যায় নি which. আপনি জানেন কী কোন রেপো থাকা উচিত?
ফিলিপ আলভারেজ

CentOS বা rhel5 প্যাকেজিং সম্বন্ধে কোন ধারণা, কিন্তু আপনি জানতে পারেন /usr/bin/savelogএ শেল স্ক্রিপ্ট sources.debian.net/src/debianutils/4.7
সি এ এস

2
আমি savelogআমার আরএইচইএল / সেন্টোস ৫/6 বাক্সের কোনও সন্ধান পাইনি, সুতরাং আমি এটি কেবলমাত্র এডকটি ডাউনলোড করেছি এবং এটি আমার প্রয়োজনের জন্য ঠিক কাজ করে বলে মনে হচ্ছে।
ডেল অ্যান্ডারসন

এর একটি নেতিবাচক savelogদিকটি হ'ল এটি ফাইলটির নাম পরিবর্তন করে তবে তারপরে সমাপ্তির আগে পুরানোগুলি জিজপ করতে দীর্ঘ সময় নেয়। ইতিমধ্যে .0 লগ ইতিমধ্যে এটিতে পরের দিনগুলিতে প্রবেশ করে। আদর্শভাবে লগ ঘোরানো এবং লগটি পুনরায় খোলার প্রক্রিয়া সংকেতের মধ্যে সময় ন্যূনতম হওয়া উচিত। আমি savelogএর কারণে সংকোচনের বৈশিষ্ট্যটি অক্ষম করেছি ।
rustyx

2

আমি এই সপ্তাহান্তে একটি লোগ্রোটি লিখেছি । আমি সম্ভবত জেডিবিপি-র দুর্দান্ত উত্তরটিmultilog পড়ে নিই ।

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

verbosecommand | logrotee \
  --compress "bzip2 {}" --compress-suffix .bz2 \
  /var/log/verbosecommand.log

যদিও এখনও অনেক কিছু করা এবং পরীক্ষা করা দরকার।


0

আমি এখনো মন্তব্য যোগ করতে পারবেন না যেহেতু গৃহীত উত্তর , একটি busybox ইঙ্গিতটি, যেখানে duএকটি নেই -bপতাকা:

du /var/log/file | tr -s '\t' ' ' | cut -d' ' -f1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.