সবার আগে; একবার আপনি কোনও প্রক্রিয়া শুরু করার পরে আপনি প্রথমে এটি বন্ধ করে (হিট Ctrl- Z) ব্যাকগ্রাউন্ড করতে পারেন এবং তারপরে bg
পটভূমিতে আবার শুরু করতে টাইপ করে। এটি এখন একটি "কাজ", এবং এটি stdout
/ stderr
/ stdin
এখনও আপনার টার্মিনালের সাথে সংযুক্ত রয়েছে।
আপনি এর শেষে "&" যুক্ত করে তত্ক্ষণাত্ পটভূমি হিসাবে প্রক্রিয়া শুরু করতে পারেন:
firefox &
নিঃশব্দ পটভূমিতে এটি চালনার জন্য, এটি ব্যবহার করুন:
firefox </dev/null &>/dev/null &
কিছু অতিরিক্ত তথ্য:
nohup
এমন একটি প্রোগ্রাম যা আপনি আপনার অ্যাপ্লিকেশনটি চালানোর জন্য ব্যবহার করতে পারেন যাতে তার স্টাডাউট / স্টার্ডার পরিবর্তে কোনও ফাইলে প্রেরণ করা যায় এবং যেমন স্ক্রিপ্ট বন্ধ করে দেওয়া সন্তানের পক্ষে স্বাক্ষর করতে পারে না। তবে আপনি অ্যাপ্লিকেশন শুরু করার আগে এটি ব্যবহার করার জন্য আপনার দূরদর্শিতা থাকা উচিত। যেভাবে nohup
কাজ করে, আপনি এটি কেবল চলমান প্রক্রিয়াতে প্রয়োগ করতে পারবেন না ।
disown
একটি বাশ বিল্টিন যা শেলের কাজ তালিকা থেকে শেল কাজ সরিয়ে দেয়। এই মূলত এর মানে হল যে আপনি ব্যবহার করতে পারেন না fg
, bg
আর এটা, কিন্তু আরো গুরুত্বপূর্ণ, যখন আপনি আপনার শেল বন্ধ এটা স্তব্ধ বা পাঠাব না SIGHUP
আর যে সন্তানকে। ভিন্ন nohup
, disown
ব্যবহার করা হয় পরে প্রক্রিয়া চালু করা হয়েছে এবং পশ্চাদপটে করা।
আপনি যা করতে পারবেন না তা হ'ল কোনও প্রক্রিয়া চালু করার পরে স্টাডাউট / স্টডার / স্টিডিন পরিবর্তন করা। কমপক্ষে শেল থেকে না। যদি আপনি আপনার প্রক্রিয়াটি চালু করেন এবং এটির স্টাডাউটটি আপনার টার্মিনালটি বলে দেয় (যা আপনি ডিফল্টরূপে করেন) তবে সেই প্রক্রিয়াটি আপনার টার্মিনালে আউটপুটে কনফিগার করা হয়েছে। প্রক্রিয়াগুলির এফডি সেটআপের সাথে আপনার শেলের কোনও ব্যবসা নেই, এটি প্রক্রিয়া নিজেই পরিচালনা করে এমন কিছু। প্রক্রিয়া নিজেই সিদ্ধান্ত নিতে পারে যে তার স্টাডাউট / স্টডার / স্টিডিনটি বন্ধ করবে কিনা, তবে আপনি নিজের শেলটিকে এটি করতে বাধ্য করতে ব্যবহার করতে পারবেন না।
ব্যাকগ্রাউন্ড প্রক্রিয়াটির আউটপুট পরিচালনা করতে, আপনার কাছে স্ক্রিপ্টগুলি থেকে প্রচুর বিকল্প রয়েছে, "নোহুপ" সম্ভবত প্রথম বিবেচনায় আসবে। তবে ইন্টারেক্টিভ প্রক্রিয়াগুলির জন্য আপনি চুপটি করতে ভুলে গেছেন ( firefox < /dev/null &>/dev/null &
) আপনি আসলে কিছুই করতে পারবেন না।
আমি আপনাকে জিএনইউ করার পরামর্শ দিচ্ছি screen
। প্রক্রিয়াটির আউটপুট উদ্বেগজনক হয়ে ওঠে এবং একটি নতুন ( ^Ac
) খুলতে পর্দার সাহায্যে আপনি কেবল আপনার চলমান শেলটি বন্ধ করতে পারেন ।
ওহ, এবং যাইহোক, $@
আপনি যেখানে এটি ব্যবহার করছেন " " ব্যবহার করবেন না ।
$@
মানে $1
, $2
, $3
..., যা আপনার কমান্ড আবর্তিত হবে:
gnome-terminal -e "vim $1" "$2" "$3" ...
এটি সম্ভবত আপনি চান না কারণ - আমরা কেবল একটি যুক্তি গ্রহণ করি। $1
আপনার স্ক্রিপ্টটি কেবল একটি যুক্তি পরিচালনা করতে পারে তা দেখানোর জন্য ব্যবহার করুন ।
আপনি যে দৃশ্যে ( দিয়া gnome-terminal -e
) দিয়েছেন সে ক্ষেত্রে একাধিক যুক্তি সঠিকভাবে কাজ করা সত্যিই কঠিন কারণ -e
কেবল একটি যুক্তি লাগে যা শেল কমান্ড স্ট্রিং। আপনার যুক্তিগুলিকে একটিতে এনকোড করতে হবে। সেরা এবং সবচেয়ে মজবুত, বরং ক্লেদী, উপায়টি এরকম:
gnome-terminal -e "vim $(printf "%q " "$@")"