$ program [arguments...] 2>&1 | tee outfile
2>&1
stderr এবং stdout স্রোত ডাম্প।
tee outfile
যে স্ট্রিমটি পায় সেটি নিয়ে যায় এবং এটি স্ক্রিনে এবং "আউটফিল" ফাইলটিতে লেখেন।
বেশিরভাগ লোকেরা সম্ভবত এটিই সন্ধান করছেন। সম্ভবত কিছু পরিস্থিতি হ'ল কিছু প্রোগ্রাম বা স্ক্রিপ্ট দীর্ঘ সময় ধরে কঠোর পরিশ্রম করছে এবং প্রচুর আউটপুট তৈরি করছে। ব্যবহারকারী এটি পর্যায়ক্রমে অগ্রগতির জন্য যাচাই করতে চান, তবে কোনও ফাইলের কাছে আউটপুটও লেখা চায়।
সমস্যা (বিশেষত স্ট্ডআউট এবং স্টডার স্ট্রিমগুলির মিশ্রণের সময়) প্রোগ্রামটি প্রবাহিত হওয়া স্ট্রিমগুলির উপর নির্ভরতা রয়েছে। যদি উদাহরণস্বরূপ, stdout- এ সব লিখেছেন করছে না রাঙা কিন্তু stderr হবে সব লিখেছেন হয় রাঙা, তারপর তারা আউট আউটপুট ফাইল এবং পর্দায় কালানুক্রমিকভাবে শেষ করব।
প্রোগ্রামটি অগ্রগতি রিপোর্ট করার জন্য প্রতি কয়েক মিনিটের মধ্যে কেবল 1 বা 2 লাইন আউটপুট দিলে এটিও খারাপ। এই জাতীয় পরিস্থিতিতে যদি আউটপুটটি প্রোগ্রামটি দ্বারা সজ্জিত না করা হয়, ব্যবহারকারী এমনকি কয়েক ঘন্টা পর্দায় কোনও আউটপুটও দেখতে পাবেন না কারণ এর কোনও কিছুই পাইপের মাধ্যমে ঘন্টার জন্য চাপ দেয় না।
আপডেট: প্রোগ্রাম unbuffer
, expect
প্যাকেজের অংশ, বাফারিংয়ের সমস্যা সমাধান করবে। এটি stdout এবং stderr সাথে সাথে স্ক্রিনে এবং ফাইলটিতে তাত্ক্ষণিকভাবে লিখতে বাধ্য করবে এবং সংযুক্ত হয়ে পুনঃনির্দেশিত হওয়ার সময় সেগুলি সিঙ্কে রাখবে tee
। উদাহরণ:
$ unbuffer program [arguments...] 2>&1 | tee outfile