আমি কেন পটভূমি প্রক্রিয়াগুলির আউটপুট দেখতে পারি?


31

উদাহরণস্বরূপ, আমি যখন টাইপ করি তখন ping 8.8.8.8 &আমরা পিং প্রক্রিয়াটি কেন কাজ করতে দেখি? এবং আমি টাইপ করার সময় find / -name '*test*' &এটি মনিটরেও দেখা যায়।

তা কেন? এটি কি সত্যিই ব্যাকগ্রাউন্ডে নেই?

উত্তর:


43

&অ্যাসিঙ্ক্রোনাস পটভূমিতে কমান্ড চালানোর জন্য শেল, অর্থাৎ, এটি forked এবং একটি পৃথক উপ-শেল মধ্যে চালানো হয়, একটি চাকরি যেমন নির্দেশ।

মনে রাখবেন যে আপনি যখন &আউটপুট রাখবেন - উভয় স্টডআউট এবং স্টডার - এখনও পর্দায় মুদ্রিত হবে । আপনি যদি স্ক্রিনে কোনও আউটপুট দেখতে না চান, তবে উভয়কেই stdoutএবং stderrএকটি ফাইলে পুনঃনির্দেশ করুন:

myscript > ~/myscript.log 2>&1 &

সাধারণত আপনি যদি ত্রুটিগুলি পরে বিশ্লেষণ করতে উদ্বিগ্ন না stderrহন /dev/nullতবে আপনাকে এটি পুনর্নির্দেশ করে ফেলে দিতে চান ।

এমনকি একই সময়ে পৃথক সাব-শেল-এ আপনি কমান্ড / স্ক্রিপ্টগুলি চালাতে পারেন। যেমন;

./script1 & ./script2 & ./script3 & 

কমান্ডটি শেষ হওয়ার আগে একটি পটভূমি কাজ কমান্ড লাইনে ফিরিয়ে আনা যেতে পারে:

fg <job-number>

job-numberচলমান পাওয়া যেতে পারে

jobs

ভাল উত্তর. আপনি যদি অন্তর্ভুক্ত করতে পারেন যে /dev/nullকোনও ফাইলটি টার্মিনাল আউটপুট পুনর্নির্দেশের জন্যও ব্যবহার করতে পারে যদি কেউ আউটপুটটিকে কোথাও সংরক্ষণ করার পরিবর্তে তা বাতিল করতে চায়। আর আমি ঠিক আছি 2>&1পুনঃনির্দেশ stderrকরা stdout? সম্ভবত আপনি এটিও পরিষ্কার করতে চান ... ধন্যবাদ
— বাইট কমান্ডার

@ বাইটকম্যান্ডার ধন্যবাদ :) সম্পাদিত, আশা করি এটি এখন পরিষ্কার হয়ে গেছে। হ্যাঁ, আপনি ঠিক বলেছেন, 2>&1পুনর্নির্দেশ stderrকরে stdout।
— রন

3
আমি মনে করি এটি উল্লেখযোগ্য stty tostopহবে যে যদি তারা টার্মিনালে লেখার চেষ্টা করে তবে পটভূমি কাজ স্থগিত করে দেয় to
— কাস্পারড

সেমিডি_উইথ_প্রেমস> / দেব / নাল 2> / দেব / নাল এবং
— tgkprog

এটি করার একমাত্র ক্ষতিটি হ'ল স্টপআউট এবং স্টডারারের আউটপুটগুলির ক্রমটি লগ ফাইলটিতে মিশে যেতে পারে।
— ম্যাথিউউ

8

আপনি যখন ব্যবহার করবেন তখন &প্রক্রিয়াটি পটভূমিতে চলছে। তবে এর স্ট্যান্ডার্ড আউটপুটটি এখনও টার্মিনাল।

প্রকৃতপক্ষে, আপনি চালাতে ping 8.8.8.8 &এবং find / -name '*test*' &একই সাথে (একটি মিশ্র আউটপুট তৈরির ফলস্বরূপ) চালাতে পারেন, তবে আপনি একই সময়ে চালাতে পারবেন না ping 8.8.8.8এবং find / -name '*test*'একই সময়ে একই শেলতে চলতে পারেন।

আপনি যদি কিছু দেখতে না চান তবে এর মতো কিছু ব্যবহার করুন ping 8.8.8.8 &> /dev/null &।


অতিরিক্তভাবে, আপনি nohupএবং সম্পর্কে জানতে চাইতে পারেন disown।


disownটার্মিনালে মুদ্রণ হতে আউটপুট প্রতিরোধ করে না।
— রুসলান

@ রুসলান: না, তবে এটি শেল থেকে কাজটি সরিয়ে দেয়। মে (অথবা নাও করতে পারে) কিছু ওপি আগ্রহী হতে পারেন হবে।
— অ্যান্ড্রিয়া Corbellini
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.