স্টিডিন থেকে প্রতি সেকেন্ডে লাইন গণনা করার জন্য কি ইউনিক্স / লিনাক্স কমান্ড রয়েছে?


22

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

আমি নিজেই এটি লিখতে পারি, তবে ভেবেছিলাম এটির উপস্থিতি থাকবে।

আমি ডাব্লুসিটির দিকে তাকালাম তবে এটির অনুমতি দেওয়ার কোনও বিকল্প দেখিনি।

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



আমি আরও সাধারণভাবে দরকারী কিছু সন্ধান করছি যা সেই প্রশ্নটি বোঝায়।
ডিজিডিগো

উত্তর:


2
watch -n 3 "wc -l logfile"

ম্যান পেজ

দেখুন - পর্যায়ক্রমে একটি প্রোগ্রাম চালান, আউটপুট পূর্ণস্ক্রিন দেখিয়ে ডিফল্টরূপে, প্রোগ্রামটি প্রতি 2 সেকেন্ডে চালিত হয়; ভিন্ন ব্যবধান নির্দিষ্ট করতে -n বা --interval ব্যবহার করুন।


45

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

tail -f /var/log/nginx/access.log | pv --line-mode --rate > /dev/null

pvকমান্ড কপি করে প্রিন্ট প্রতি সেকেন্ডে লাইনের বর্তমান নম্বর, (ডিফল্ট প্রতি সেকেন্ডে বাইট) stderr যা, এই বিশেষ তথ্য উৎস (nginx এর ডিফল্ট লগ ফাইল) এর জন্য প্রতি সেকেন্ডে ইনকামিং ওয়েব অনুরোধ equates। আমি কেবল গণনাগুলির যত্ন করি, তাই আমি স্টপআউটটি পাইপ করি /dev/null। এখানে বিকল্পগুলিও রয়েছে:

  • -b (মোট রেখার সংখ্যা),
  • --average-rate (শুরু করার পর থেকে গড় হার), এবং
  • --timer (পাইপটি কতক্ষণ চলছে তা ট্র্যাক করে)।

যদি আপনি না বলেন --line-mode, এটি বাইটগুলি গণনা করবে যা সম্ভবত সার্ভার লগগুলির জন্য আপনি চান না তবে এটি অন্য কোথাও সহজ হতে পারে।

ফাইনাল নোট: ... | pv -lb > file.txtমত অনেক ... | tee file.txt | awk '{printf "\r%lu", NR}', যা লাইন গণনা জন্য কুশলী, কিন্তু pvকল পথ খাটো, যদিও আউটপুট বেশ উত্তেজনাপূর্ণ হিসাবে নয় - pvডিফল্টরূপে প্রতি মাসের দ্বিতীয় আপডেট যখন awkকমান্ড আপডেট ক্রমাগত।


পিভি থেকে শুধুমাত্র একটি মান পাওয়া সম্ভব? পর্যবেক্ষণের উদ্দেশ্যে সময়ের জন্য আমার গড় মূল্য প্রয়োজন value সুতরাং আমি ভেরিয়েবলের মান নির্ধারণ করা প্রয়োজন।
সোনিক

@ সোনিক এটি একটি জঞ্জাল, যেহেতু pvএটিই নির্মিত নয় (আমি awkযদি আপনি থাকতাম তবে আমি পৌঁছাতাম ) তবে অবশ্যই এটি সম্ভব। ধরুন twilight stream --timeout 5একটি কমান্ড যে 5 সেকেন্ড টুইটার spritzer থেকে নমুনা হবে এবং তারপর প্রস্থান হল: RATE="$(twilight stream --timeout 5 | pv --line-mode --rate --force 2>&1 1>/dev/null | tr -s '\r\n' '\n' | tail -1)", তারপর echo $RATEভালো কিছু উত্পাদন করে "[40.8 / সেকেন্ড]" (অতিরিক্ত নোট --forceপতাকা, যেহেতু pvএর stderrআর একটি Tty যায়)।
chbrown

আমার কাছে সমস্ত প্রোগ্রামের জন্য নির্ভরযোগ্যভাবে কাজ করছে বলে মনে হয় না; > /dev/nullশোগুলি অপসারণ করে যে আউটপুটটি এখন "ব্লক ছিন্নযুক্ত" এবং আর মসৃণ প্রবাহিত হয় না। সম্ভবত unbufferকিছু উত্পাদনকারী প্রোগ্রামের প্রয়োজন হয় যাতে তারা পাইপ হচ্ছে যখন সনাক্ত করে যে তারা আউটপুট বাফারিং ব্লক করে না?
এনএইচ 2

13

আপনি চেষ্টা করা উচিত logtop?

tail -f foobar.log |logtop

আপনি যে লগ টপটি উল্লেখ করছেন তা কি এটি? github.com/JulienPalard/logtop
digidigo

হ্যাঁ, যদি আপনি ডেবিয়ান ব্যবহার করছেন সেখানে সংগ্রহস্থলের মধ্যে একটি প্যাকেজ packages.debian.org/wheezy/logtop
klocek

ডাং আমি মনে করি এটি আমার প্রয়োজন তবে আমি এটি সেন্টোগুলিতে সংকলন করতে পারিনি
ডিজিডিগো

1
watch -n 5 "mysqladmin status | awk -F'  ' '{ print \$NF }'"

আমি এই কাজ করতে পারেন না। আপনি সিনট্যাক্স সম্পর্কে নিশ্চিত?
ডিজিডিগো

আপনি কোন ত্রুটি পান? আপনি কি পাসওয়ার্ড না প্রেরণে ~/.my.cnfচালানোর mysqladminজন্য কনফিগার করেছেন ?
কোয়ান্টা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.