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


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.