প্রথমত, প্রতিবার আপনি যখন কোনও কমান্ড কার্যকর করেন, আপনি শেলটি একটি নতুন প্রক্রিয়া তৈরি করবেন, আপনি এটি চালাবেন কিনা তা নির্বিশেষে &। &কেবলমাত্র আপনি এটি পটভূমিতে চালাচ্ছেন।
নোট করুন এটি খুব সঠিক নয়। কিছু কমান্ড, যেমন cdশেল ফাংশন এবং সাধারণত একটি নতুন প্রক্রিয়া কাঁটাচামচ করে না। বাহ্যিক কমান্ড বা শেল ফাংশন type cmdকিনা তা সাধারণত আপনাকে জানায় cmd। type typeআপনাকে বলে যে typeনিজেই একটি শেল ফাংশন।
nohupঅন্যরকম। এটি নতুন প্রক্রিয়াটিকে উপেক্ষা করতে বলে SIGHUP। এটি প্যারেন্ট শেল বন্ধ হয়ে গেলে কার্নেলের দ্বারা প্রেরিত সিগন্যাল।
আপনার প্রশ্নের উত্তর দেওয়ার জন্য নিম্নলিখিতটি করুন:
- রান
emacs & (ডিফল্টরূপে পৃথক এক্স উইন্ডোতে চালানো উচিত) ।
- প্যারেন্ট শেল উপর, চালান
exit।
আপনি লক্ষ্য করবেন যে emacsপটভূমিতে চালানো সত্ত্বেও উইন্ডোটি মারা গেছে। এটি ডিফল্ট আচরণ এবং nohupএটি সংশোধন করার জন্য অবিকল ব্যবহার করা হয়।
ব্যাকগ্রাউন্ডে একটি চাকরি চালানো ( &বা bgঅন্যান্য শেলগুলির সাথে অন্যান্য বাক্য গঠনও রয়েছে বাজি রেখেছি) এটি একটি শেল বৈশিষ্ট্য, আধুনিক সিস্টেমগুলির মাল্টিটাস্কের ক্ষমতা থেকে উদ্ভূত। প্রত্যেক প্রোগ্রাম আপনি লঞ্চ করতে চাই, আধুনিক শাঁস জন্য একটি নতুন শেল উদাহরণস্বরূপ forking পরিবর্তে ( bash, zsh, ksh, ...) প্রোগ্রাম (বা একটি তালিকা পরিচালনা করার ক্ষমতা থাকবে কাজ )। তাদের মধ্যে একবারে কেবল একটিই অগ্রভাগে থাকতে পারে , যার অর্থ এটি শেল ফোকাস পায়। আমি আশা করি যে কেউ অগ্রভাগে চলমান প্রক্রিয়া এবং ব্যাকগ্রাউন্ডের মধ্যে একটির মধ্যে প্রধান পার্থক্য সম্পর্কে আরও প্রসারিত করতে পারে (মূলটি stdin/ এটিকে অ্যাক্সেস করা হচ্ছে stdout)।
যে কোনও ক্ষেত্রে, এটি শিশু প্রক্রিয়াটির যেভাবে প্রতিক্রিয়া দেখায় তাতে কোনও প্রভাব ফেলবে না SIGHUP। nohupআছে।
nohupকরে তা ব্যাখ্যা করে। আপনি কোন অংশে বিভ্রান্ত হয়েছেন?