কেন গ্রেপ পুনঃনির্দেশের সাথে কাজ করে না?


15

topপুনর্নির্দেশ সহ কমান্ডটি ব্যবহার করা ভাল কাজ করে:

top > top.log

এখন আমি একটি নির্দিষ্ট লাইন ফিল্টার করতে গ্রেপ ব্যবহার করতে চাই:

top | grep "my_program" > top.log

তবে লগ ফাইলটি খালি থাকবে। কিন্তু গ্রেপ ব্যবহারের সময় একটি আউটপুট সরবরাহ করে

top | grep "my_program"

যেখানে my_programকিছু আউটপুট দেখতে একটি চলমান প্রোগ্রাম দ্বারা প্রতিস্থাপন করতে হবে।

আমার পদ্ধতির কাজ হয় না কেন? এবং আমি কীভাবে এটি ঠিক করতে পারি?

bash  grep 

2
আমি এটি চেষ্টা করেছিলাম, এবং এটি আমার পক্ষে কাজ করে। তবে আপনার পরিবর্তে -bবিকল্পের topব্যবহার বা ব্যবহারের দিকে নজর দেওয়া উচিত ps
লেভ লেভিটস্কি

-bআমার সমস্যা সমাধান করে নি, তবে কিছু এনকোডিং সমস্যা সমাধান করেছে। ধন্যবাদ.

উত্তর:


22

আপনি বর্ণিত একই আচরণ আমি পেয়েছি। উবুন্টু ১১.১০

top | grep "my_program" > top.log

কোন আউটপুট উত্পাদন করে না।

আমি বিশ্বাস করি এর কারণ হ'ল গ্রেপ তার আউটপুটটি বাফার করছে। জিএনইউ গ্রেপকে আউটপুট লাইন-বাই-লাইন স্পিট করতে বলতে, --line-bufferedবিকল্পটি ব্যবহার করুন :

top | grep --line-buffered "my_program" > top.log

অন্যান্য সম্ভাব্য সমাধানগুলির জন্য এই এইও প্রশ্নটি দেখুন ।


3
+1 --line-bufferedসমস্যা সমাধান করে।

আপনাকে ধন্যবাদ, এটি আমার জন্যও সমস্যাটি সমাধান করে। -bবিকল্প এখনো লেভ Levitsky থেকে ভাল উপদেশ, অত্যধিক। এটি লগ ফাইলের সাহায্যে কিছু এনকোডিং সমস্যা সমাধান করেছে।

2

আপনার ব্যবহার করা উচিত:

top -n 1 | grep "blah" > top.log

"-n 1" এক পুনরাবৃত্তির জন্য শীর্ষে চলে আসে এবং তারপরে প্রতি কয়েক সেকেন্ডে নিয়মিত আপডেট করার পরিবর্তে প্রস্থান করে

যেহেতু আপনি কেবল একটি লাইনের সন্ধান করছেন যদিও পিএস ব্যবহারের জন্য ভাল সরঞ্জাম।


1

এই সমস্যার জন্য আমার কাজটি ছিল:

while :;do top -b -n 1 | grep "my_program" >> top.log;done &

এইভাবে আমি আমার_প্রগ্রামের ব্যাকগ্রাউন্ডে একটি চলমান মনিটর রাখতে পারি এবং ফলাফলগুলি টপ.লগে রেখে দিতে পারি।



0

যদিও উভয়ই আমার পক্ষে কাজ করে, আমি মনে করি লেভ লেভিটস্কির পরামর্শটি সঠিক। -bযুক্তি ব্যবহার করুন ।

আউটপুট পুনঃনির্দেশ হ'তে সমস্যা হ'ল এবং স্টাডআউটের মাধ্যমে আপনি কিছু পাচ্ছেন না, তাই পরিবর্তে এটি চেষ্টা করুন:

top -b 2>&1 | grep "my_program" > top.log

মনে রাখবেন যে আপনার পাশাপাশি আউটপুট বাফারিংয়ের ক্ষেত্রেও সমস্যা হতে পারে। আপনার শেলটি নিয়মিতভাবে ফাইলটিতে লিখবে না যাতে এটি top.logপূরণ করতে কিছুটা সময় নিতে পারে ।

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