লেজে নতুন লাইন গণনা জন্য কিভাবে দেখুন


9

আমি এরকম কিছু করতে চাই:

watch tail -f | wc -l
#=> 43
#=> 56
#=> 61
#=> 44
#=> ...

এটি প্রতিটি সেকেন্ডে লেজের নতুন লাইন গণনা করে

/ লিনাক্স, সেন্টো

আরও পরিষ্কার হতে হবে। আমি এরকম কিছু পেয়েছি:

tail -f /var/log/my_process/*.log | grep error

আমি কিছু ত্রুটি বার্তা পড়ছি। এবং এখন আমি তাদের গণনা করতে চাই। এক সেকেন্ডে আমি কতগুলি ~ ত্রুটি পেয়েছি। সুতরাং লগের একটি লাইন একটি প্রসেসে একটি ত্রুটি।


আপনি কি করতে চেষ্টা করছেন? যদি আপনি সংযুক্ত লাইনগুলি দেখতে চান তবে এটি tail -f /path/to/fileএকা ব্যবহার করার জন্য যথেষ্ট । আপনি যদি ফাইল লাইন দেখতে চান তবে আপনি এটি ব্যবহার করতে পারেন watch wc -l /path/to/file।
— খালেদ

@ খালেদ, আমার দেখতে হবে কত নতুন লাইন সংযোজন হয়েছে
— fl00r

আমি বেশ কয়েকটি ফাইলের জন্য রেজেক্সের সাথে লেজ ব্যবহার করি এবং আমি দেখতে চাই যে এক সময়ের মধ্যে এই সমস্ত ফাইলগুলিতে কতগুলি লাইন সংযুক্ত করা হয়েছে
— fl00r

1
Hmpfh। tail -f /var/log/my_process/*.log |grep error > /tmp/error.lines & ; watch wc /tmp/error.lines? তারপরে গণিত করুন।
— সিজেসি

@ সিজেসি এটি কাজ করে, ধন্যবাদ! :) আপনার এটিকে উত্তর হিসাবে উত্তর দেওয়া উচিত
— fl00r

উত্তর:


24

আমি সম্প্রতি পিভি আবিষ্কার করেছি এবং এটি সত্যিই দুর্দান্ত, আপনি এরকম কিছু করতে পারেন

tail -f logfile | pv -i2 -ltr > /dev/null

  • -i2 = প্রতি 2 সেকেন্ডে গণনা করুন
  • -l = গণনা লাইন
  • -t = মুদ্রণের সময়
  • -আর = শো হার

3

এখানে একটি দ্রুত এবং নোংরা পদ্ধতি। আপনি মূলত বিরতি চান tailএবং watch wcপৃথক অংশে, এবং ভালো কিছু করতে:

tail -f /var/log/my_process/*.log |grep error > /tmp/error.lines &
watch wc /tmp/error.lines

কোন সময়ে, আপনি একটি ত্রুটি / সেকেন্ড নম্বর পেতে গণিত করতে পারেন। তবে, আপনি যদি কেবল নিজের ত্রুটি হারের এক-পরীক্ষার জন্য এটি করছেন, দ্রুত এবং ময়লা যথেষ্ট ভাল হতে পারে।


3

যদি পিভি না পাওয়া যায় তবে এটি পার্ল দিয়ে করা যেতে পারে:

প্রতি এক সেকেন্ড:

tail -f  recycleBack*out  | perl -e 'while (<>) {$l++;if (time > $e) {$e=time;$i++;print "$i=> $l\n";$l=0}}'

প্রতি 10 সেকেন্ডে

tail -f  recycleBack*out  | perl -e 'while (<>) {$l++;if (time > $e+10) {$e=time;$i++;print "$i=> $l\n";$l=0}}'

নমুনা আউটপুট:

1=> 1
2=> 1523
3=> 1339
4=> 1508
5=> 1785
6=> 1587
7=> 1770
8=> 1432
9=> 1339
10=> 1555
11=> 1663
12=> 1693
13=> 1647

-1

আপনি এরকম কিছু চেষ্টা করতে পারেন:

tail -f /var/log/my_process/*.log | perl -pe '$_ = "$. $_"'

এটি প্রতিটি লাইনের সামনের লাইন নম্বর প্রিন্ট করে।


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