আসুন আপনি বিবেচনা করুন যে আপনি gedit
কোনও টার্মিনাল থেকে একটি পাঠ্য সম্পাদক খুলছেন এবং এতে কাজ করছেন। আপনি যদি টার্মিনালটি বন্ধ করার আগে বন্ধ করে দেন gedit
, টার্মিনালটি বন্ধ করার সাথে সাথে জিডিটও বন্ধ হয়ে যায়। তাহলে এখানে কি চলছে? gedit
টার্মিনাল অধীনে একটি শিশু প্রক্রিয়া হিসেবে চালানো হয়। আপনি যখন টার্মিনালটি বন্ধ করবেন তখন একটি হ্যাঙ্গ আপ সিগন্যাল (SIGHUP
) প্রেরণ করা হয় যা শিশু প্রক্রিয়াটিকে মেরে ফেলে।
অন্যদিকে আপনি যদি gedit
পিতা বা মাতা টার্মিনালটি বন্ধ করার পরেও আপনার সন্তানের প্রক্রিয়াটি (এখানে ) চালিয়ে যেতে চান তবে আপনি চাইবেন যে আপনার প্রক্রিয়াটি হ্যাঙ্গআপ সিগন্যালের প্রতিরোধ ক্ষমতা থেকে রক্ষা পাবে। যাতে টার্মিনালটি বন্ধ করে দেওয়া শিশু প্রক্রিয়াটি বন্ধ না করে। nohup
ঠিক এই কাজ করে।
nohup
টার্মিনাল থেকে কোনও কমান্ড সংযোগ বিচ্ছিন্ন করে না , এটি আপনার স্ক্রিপ্টটি SIGHUP উপেক্ষা করে এবং stdout / stderr কে একটি ফাইল nohup.out এ পুনর্নির্দেশ করে, যাতে আপনি লগ আউট করার পরে কমান্ডটি পটভূমিতে চলতে পারে। যদি আপনি শেল / টার্মিনালটি বন্ধ করেন বা লগ অফ করেন, আপনার আদেশটি আর সেই শেলের শিশু নয়। এটি init প্রক্রিয়ার অন্তর্ভুক্ত। আপনি যদি অনুসন্ধান করেন তবে pstree
দেখতে পাবেন এটি এখন প্রক্রিয়া 1 (init) এর মালিকানাধীন। এটিকে অগ্রভাগে ফিরিয়ে আনা যায় না কারণ অগ্রভাগ আর বিদ্যমান নেই।
disown
আরও ভাল বিকল্পnohup
। একটি কমান্ডcommand &
বা এর সাথে ব্যাকগ্রাউন্ড করুনCtrl-Z
, তারপরেdisown
এটি শেল থেকে আলাদা করতে ব্যবহার করুন ।