TL; ড:
sleepআমি লগ আউট এবং টার্মিনালটি বন্ধ হয়ে গেলে কেন প্রক্রিয়াটি বেঁচে থাকতে পারে? মনে মনে, nohupলগআউট করার সময় ডেমন এবং প্রোগ্রামগুলি বাদ দিয়ে সমস্ত কিছুই মারা যাবে। যদি sleepএভাবে বাঁচতে পারি তবে এর অর্থ কি এই যে আমি nohupকমান্ডের পরিবর্তে এই পদ্ধতিটি ব্যবহার করতে পারি ?
যদি না bashউদাহরণস্বরূপ দ্বারা উত্পন্ন হওয়া sshগেছে huponexitবিকল্প সেট, কোন প্রক্রিয়া নির্গম উপর কোন মানে দ্বারা সমাপ্ত হবে / লগআউট, এবং যখন huponexitবিকল্প সেট করা থাকে, ব্যবহার kill -9শেল উপর ব্যবহার করার জন্য একটি ভাল বিকল্প নয় nohupশেল-এর শিশু প্রক্রিয়ার উপর; nohupশেলের শিশু প্রসেসগুলি এখনও তাদের শেল থেকে আগত সিগাপগুলি থেকে রক্ষা করবে এবং এটি যখন গুরুত্বপূর্ণ nohupনয় তখনও তাকে অগ্রাধিকার দেওয়া প্রয়োজন কারণ এটি শেলটি নিখুঁতভাবে শেষ করতে দেয়।
ইন bashএকটি বিকল্প বলা আছে huponexitযা যদি সেট করা হবে, bashSIGHUP প্রস্থান / লগ-আউট উপর তার সন্তানদের ধ্বংস
ইন্টারেক্টিভ অ-লগইন bash দৃষ্টান্তগুলিতে যেমন একটি bashউদাহরণস্বরূপ উত্সাহিত হয়েছে gnome-terminal, এই বিকল্পটিকে উপেক্ষা করা হবে; কিনা huponexitসেট করা থাকে অথবা সেট না, bashএর শিশুদের দ্বারা SIGHUPped হবে না bashপ্রস্থান উপর;
ইন্টারেক্টিভ লগইন bash দৃষ্টান্তগুলিতে, যেমন একটি bashউদাহরণস্বরূপ উত্সাহিত উদাহরণস্বরূপ ssh, এই বিকল্পটি উপেক্ষা করা হবে না (তবে এটি ডিফল্টরূপে সেট করা নেই); যদি huponexitসেট bashকরা bashথাকে তবে প্রস্থান / লগআউট করার পরে বাচ্চাদের সাইন আপ করা হবে ; যদি huponexitসেট bashনা করা থাকে bashতবে প্রস্থান / লগআউট করার পরে বাচ্চাদের সাইনআপ করা হবে না ;
সুতরাং সাধারণভাবে একটি ইন্টারেক্টিভ লগইন ইভেন্ট থেকে প্রস্থান / লগ আউট bash, huponexitবিকল্পটি সেট না করা থাকলে শেলটিকে তার বাচ্চাদের SIGHUP করবে না এবং ইন্টারেক্টিভ নন-লগইন ইভেন্ট থেকে প্রস্থান / লগ আউট bashশেলটিকে তার শিশুদের সাইনআপ করবে না নির্বিশেষে;
এটি অবশ্য এই ক্ষেত্রে অপ্রাসঙ্গিক: ব্যবহার kill -9 sleepনির্বিশেষে বেঁচে থাকবে, কারণ এর পিতামাতার প্রক্রিয়াটি হত্যার ফলে পূর্ববর্তীকে কিছু করার bashসুযোগ ছেড়ে যায় না (উদাহরণস্বরূপ, যদি বর্তমান উদাহরণটি লগইন দৃষ্টিকোণ ছিল এবং বিকল্পটি সেট করা হয়েছিল, এটিতে স্বাক্ষর করতে)।bashbashhuponexit
এটি যোগ করার সাথে সাথে, অন্যান্য সিগন্যালের বিপরীতে (যেমন একটি SIGHUP সিগন্যাল প্রেরণ করা হয়েছিল bash), একটি সিগ্কিল সিগন্যাল কখনই কোনও প্রক্রিয়ার শিশু প্রক্রিয়াগুলিতে প্রচারিত হয় না, তাই sleepএমনকি হত্যা করা হয় না;
nohupSIGHUP সিগন্যালের প্রতিরোধ প্রক্রিয়া শুরু করে, যা কিছু আলাদা; এটি একটি SIGHUP সিগন্যাল গ্রহণের পরে প্রক্রিয়াটিকে ঝুলিয়ে রাখবে, যা এই ক্ষেত্রে বিকল্প সেট করা এবং শেলটি সরে যাওয়ার bashক্ষেত্রে ইন্টারেক্টিভ লগইন উদাহরণের দ্বারা গ্রহণ করা যেতে পারে huponexit; সুতরাং প্রযুক্তিগতভাবে আনসেট অপশনটি দিয়ে nohupইন্টারেক্টিভ লগইন bashইভেন্টে একটি প্রক্রিয়া শুরু huponexitকরার জন্য প্রক্রিয়াটি একটি সিএইচএইচপি সংকেত গ্রহণের পরে প্রক্রিয়াটিকে আটকাতে বাধা দেবে, তবে শেলটি থেকে বের হওয়া / লগ আউট নির্বিশেষে এটি সাইনআপ করবে না;
সাধারণভাবে, তবে, যখন nohupঅভিভাবক শেল থেকে আসা সিএইচএইচপি সংকেতগুলি রোধ করার প্রয়োজন হয় , তখন সন্তানের পদ্ধতিতে kill -9পিতামাতার পদ্ধতিতে পছন্দ করার কোনও কারণ নেই nohup; পরিবর্তে, এটি বিপরীত হওয়া উচিত।
kill -9পদ্ধতিটি ব্যবহার করে পিতামাতাকে হত্যা করা পিতামাতার পক্ষে নিখুঁতভাবে প্রস্থান করার সুযোগ ছেড়ে দেয় না, যখন nohupপদ্ধতিটি ব্যবহার করে শিশুটি শুরু করে তখন পিতামাতাকে সিগহুপের মতো অন্যান্য সিগন্যালগুলি দিয়ে শেষ করে দেওয়া যায় (যা একটি উদাহরণ তৈরি করে যা প্রসঙ্গে বোঝায় কোনও সন্তানের ব্যবহার শুরু করেছেন nohup), যা এটিকে সুদৃ .়ভাবে প্রস্থান করতে দেয়।
&প্রক্রিয়াটিকে ব্যাকগ্রাউন্ডে ফেলে দেবে (ডেমনের মতো) এবং আপনি লগ আউট হয়ে গেছেন এমন ইভেন্ট চলতে থাকবে।