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


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.