আমি যদি কোনও পটভূমি প্রক্রিয়া চালু করি এবং তারপরে লগ আউট করি তবে কি এটি চালিয়ে যেতে থাকবে?


29

সহকর্মীর সাথে দীর্ঘ সময় আলোচনার পরে এটি জিজ্ঞাসা করে আমি সত্যিই এখানে একটি ব্যাখ্যা চাই।

&কমান্ড লাইনে " " যুক্ত করে বা এটিকে থামিয়ে CTRL-Zএবং ব্যাকগ্রাউন্ডে " bg" দিয়ে পুনরায় শুরু করে আমি একটি ব্যাকগ্রাউন্ড প্রক্রিয়া চালু করি । তারপরে আমি লগ আউট করি।

কি ঘটেছে?

আমরা নিশ্চিত ছিলাম যে এটি একটি সাইনআপের মাধ্যমে হত্যা করা উচিত ছিল, তবে এটি ঘটেনি; আবার লগ ইন করার পরে, প্রক্রিয়াটি সুখে চলছিল এবং pstreeদেখিয়েছিল যে এটি "গৃহীত" হয়েছিল init

এটা কি প্রত্যাশিত আচরণ?

তবে তা যদি হয় তবে nohupকমান্ডের উদ্দেশ্য কী? দেখে মনে হচ্ছে প্রক্রিয়াটি যেভাবেই হোক না কেন বা এর বাইরে হত্যা করা হবে না ...


সম্পাদনা 1

আরও কিছু বিশদ:

  • কমান্ডটি শারীরিক কনসোল থেকে নয়, একটি এসএসএইচ অধিবেশন থেকে শুরু হয়েছিল।
  • কমান্ডটি এবং এবং বা ছাড়াই চালু হয়েছিল ; এরপরে এটি স্থগিত করা হয়েছিল এবং এর সাথে পটভূমিতে পুনরায় শুরু হয়েছিল ।nohup&CTRL-Zbg
  • SSH অধিবেশন করা হয়নি ড্রপ। আসল লগআউট (" exit" কমান্ড) ছিল।
  • প্রক্রিয়াটি ছিল একটি scpফাইল অনুলিপি অপারেশন।
  • আবার লগ ইন করার পরে, pstreeপ্রক্রিয়াটি চলমান এবং এর শিশু হিসাবে দেখানো হয়েছিল init

সম্পাদনা 2

প্রশ্নটি আরও স্পষ্টভাবে বর্ণনা করতে: ব্যাকগ্রাউন্ডে কোনও প্রক্রিয়া স্থাপন (ব্যবহার &বা bg) কমান্ডের SIGHUPমতোই তা উপেক্ষা করবে nohup?


সম্পাদনা 3

আমি নিজে একটি পাঠানোর চেষ্টা SIGHUPকরতে scp: এটা থেকে বেরিয়ে গেছে, তাই এটা স্পষ্টভাবে সংকেত উপেক্ষা করে না।

তারপরে আমি আবার এটি চালু করার চেষ্টা করেছি, এটিকে পটভূমিতে রেখে এবং লগিং বন্ধ করেছি: এটি "গৃহীত" হয়ে গেছে initএবং চালিয়ে যেতে থাকে এবং লগ ইন করার সময় আমি এটি সেখানে পেয়েছি।

আমি এখন বেশ বিস্মিত। দেখে মনে হচ্ছে কোনও আপ SIGHUPপাঠানোই হয়নি আপলোড লগিং বন্ধ।


আমি সেখানে কনসোল আই / ও এর কোনও উল্লেখ দেখতে পাইনি, যা জিনিসগুলিতেও ভ্রমণ করবে। 1>/dev/null 2>&1বাশ ইত্যাদির জন্য আপনি কি জিনিসগুলি অন্যদিকে ঘুরিয়ে দিয়েছিলেন ?
অ্যাভারি পায়েেন

না, আমি করিনি। এসসিপি অবশ্যই স্ট্যান্ডার্ড ইনপুট প্রয়োজন হয় না ... এবং স্ট্যান্ডার্ড আউটপুট একটি সমস্যা বলে মনে হয় না।
ম্যাসিমো

আপনার শেলটি লগইন শেল হিসাবে সম্পাদিত হয় বা না তার পারফরম্যান্স পরিবর্তন করে যা এখানে ঘটতে পারে।
ওয়ার্নার

অন্য কিছু পরীক্ষা সম্পন্ন হয়েছে; আমি এখানে সংক্ষিপ্তসার জানিয়েছি: সার্ভারফ্রন্ট / প্রশ্ন / ১১7১৫২
ম্যাসিমো

উত্তর:


20

উত্তর পাওয়া গেছে।

বেস এর জন্য, এটি huponexitশেল বিকল্পের উপর নির্ভর করে , যা বিল্ট-ইন shoptকমান্ড ব্যবহার করে দেখা এবং / অথবা সেট করা যায় ।

দেখে মনে হচ্ছে এই বিকল্পগুলি ডিফল্টরূপে বন্ধ রয়েছে, কমপক্ষে রেডহ্যাট-ভিত্তিক সিস্টেমে।

বেস ম্যান পৃষ্ঠাতে আরও তথ্য :

একটি সাইনআপ প্রাপ্তির পরে শেলটি ডিফল্টরূপে প্রস্থান করে। প্রস্থান করার আগে, একটি ইন্টারেক্টিভ শেল চলমান বা বন্ধ হয়ে সমস্ত কাজগুলিতে SIGHUP কে পুনরায় পাঠায়। স্থগিত করা কাজগুলি তারা SIGHUP প্রাপ্ত তা নিশ্চিত করার জন্য SIGCONT প্রেরণ করা হয়। শেলটি কোনও নির্দিষ্ট জবলে সিগন্যাল প্রেরণ করা থেকে বিরত রাখতে, এটি জঞ্জাল টেবিল থেকে অস্বীকৃত বিল্টিনের সাথে সরিয়ে ফেলা উচিত (নীচে শেল বিল্টিন কম্যান্ডগুলি দেখুন) বা অস্বীকৃত -h ব্যবহার করে সাইনআপ গ্রহণ না করার জন্য চিহ্নিত করা উচিত।

যদি হুপোনেক্সিট শেল বিকল্পটি শপ্টের সাথে সেট করা থাকে, তবে ইন্টারঅ্যাকটিভ লগইন শেলটি প্রস্থান করলে ব্যাশ সমস্ত চাকরিতে একটি SIGHUP প্রেরণ করে।


2
এটি একটি নির্বোধ ডিফল্ট, তবে আমার সাহস আমাকে বলে যে এটি ব্যাশের চেয়ে আরএইচ ত্রুটি। বিটিডব্লিউ, জেডএসের সাহায্যে আপনি & ব্যবহার করতে পারেন! অস্বীকার করার শর্টকাট হিসাবে এবং প্রক্রিয়াগুলি দীর্ঘস্থায়ী হয় এবং দীর্ঘশ্বাস ফেলে।
জর্জেন স্ট্রোবল

7

আমি ওয়ার্নারের সাথে একমত হয়েছি এবং কেবল যুক্ত করতে চাই যে আপনি বিল্টিন "অস্বীকৃতি" কমান্ডের সাহায্যে শেলটিকে SIGHUP প্রেরণ থেকে বিরত রাখতে পারবেন। ব্যাশ ম্যান পৃষ্ঠাতে একটি ভাল বর্ণনা রয়েছে।


4

কমান্ড আরম্ভ করার জন্য আপনি Nohup কমান্ডটি ব্যবহার করতে পারেন এবং আউটপুটটিকে নোহপ আউটপুট ফাইলে পুনর্নির্দেশ করতে পারেন । নোহপ ম্যান পৃষ্ঠা থেকে:

nohup - run a command immune to hangups, with output to a non-tty

অন্য বিকল্পটি হ'ল স্ক্রিন কমান্ড ব্যবহার করা । স্ক্রিন ব্যবহারের সুবিধা হ'ল আপনি পরে প্রক্রিয়াটির সাথে পুনরায় সংযোগ করতে পারবেন।


ডাউনভোটস কেন? লগআউটে কোনও প্রক্রিয়া মারা যাওয়া এড়ানোর জন্য নোহপ এবং স্ক্রিন ব্যবহার করা নিখুঁতভাবে গ্রহণযোগ্য উপায়। অন্যদের মধ্যে রয়েছে, তবে এই দুটোই কাজ করে। চুক্তিটি কি ছিল?
জিম

2
আমি মনে করি এটি একটি দুর্দান্ত বিষয়, তবে প্রশ্নটি কেন তার প্রক্রিয়াগুলি হত্যা করা হচ্ছে না তা "কীভাবে তাদের হত্যা থেকে রক্ষা করা যায়" তা নয়।
CarpeNoctem

2

আপনি যখন কোনও প্রক্রিয়াটিকে পটভূমিতে কাঁটাবেন তখনও এটি চালিত শেল থেকে শিশু প্রক্রিয়া হবে।

শেলের নীচে চলমান সমস্ত শিশু প্রক্রিয়াগুলি প্রস্থান করার পরে একটি সাইনআপ পাঠানো হয়। পারফরম্যান্সটি যথাযথ পরিস্থিতির উপর নির্ভর করে কিছুটা পরিবর্তিত হয়, যা বাশের ম্যানপেজে মৌখিকভাবে বিস্তারিত। অন্যান্য শাঁসের সম্ভবত একই রকম বর্ণনা রয়েছে।

অ্যাপাচি এবং অন্যান্য ডেমনগুলি সাধারণত SIGHUP এ কনফিগারেশন পুনরায় লোড করে। ইউজারস্পেস ইউটিলিটিগুলি প্রায়শই মারা যায়। সংকেতগুলির সাথে লিঙ্কযুক্ত অ্যাপ্লিকেশন কর্মক্ষমতা অ্যাপ্লিকেশনটিতে স্বতন্ত্র হতে পারে।


প্রক্রিয়াটি ঠিক এই ক্ষেত্রে একটি সাইনআপ পাওয়া উচিত ছিল, তাই না? এটি কেবল এটিকে এড়িয়ে গেছে, আমি পরীক্ষা করব।
ম্যাসিমো

হ্যাঁ অবশ্যই. আমি পরিস্থিতি এমনটাই বিশ্বাস করি। আপনি যদি ডকুমেন্টেড পারফরম্যান্সে সত্যই সন্দেহ করেন, আপনি সিগন্যালটি ফাঁদে ফেলতে এবং লগ ইন করতে একটি ছোট স্ক্রিপ্ট হ্যাক করতে পারেন।
ওয়ার্নার

0

প্রক্রিয়াটি কী ছিল? আগের পোস্ট 1 এ বর্ণিত পারফরম্যান্সটি নির্ভুল ছিল।

কিছু স্ক্রিপ্ট ফাংশন এবং প্রক্রিয়া সংকেত ফাঁদে ফেলতে পারে। লুপগুলি পাগলের মতো পালাতে পারে।

দেখুন:

এসএসএইচ সেশন হ্রাস - কমান্ডটি কার্যকর করা চালিয়ে যায়?

4: 22 অপরাহ্ন 1 সম্পাদনা করুন

বাশ ম্যানপেজ থেকে:

The shell exits by default upon receipt of a SIGHUP.   Before  exiting,
an  interactive  shell  resends  the  SIGHUP  to  all  jobs, running or
topped.

প্রাথমিক গবেষণা 1 দেখায় যে ওপেনএসএইচ সম্ভবত সাইনআপটিকে উপেক্ষা করবে, সম্ভবত আরও সংকেত।


পোস্টটি আসলে আমাকে প্রশ্ন জিজ্ঞাসা করতে বিরক্ত করেছে। বিশদ জন্য, উপরে সম্পাদনা দেখুন।
ম্যাসিমো

2
অন্যান্য থ্রেডের উত্তরগুলি এটিকে
শোনায়

'নোহপ' হ'ল আদেশগুলি যা আপনি জানেন যে একটি সাইনআপের সাথে মারা যাবে এবং আপনি সেগুলি চান না, আমার ধারণা।
এমফিনি

ম্যান পেজটি কেবল এটি বলে না; আমি আগামীকাল হত্যার চেষ্টা করব ...
ম্যাসিমো

-1

আপনি যদি কোনও সরঞ্জামের মাধ্যমে কমান্ডটি চালু না করেন screen, তারপরে যখন সেশনটি শেষ হয়, সুতরাং সেই সেশনের সাথে সম্পর্কিত সমস্ত কাজ / কাজগুলি করুন।


আমি ঠিক যা ভাবছিলাম তা বাদে ... তারা ঠিক করেনি।
ম্যাসিমো

তারা প্রতিবার আমি যা বলেছি তা করেছি ... সম্ভবত এটি আপনি ব্যবহার করা শেলের উপর নির্ভর করে?
ওয়ারেন

-1 তারা না; উত্তর এত সহজ নয়। আমি সবেমাত্র একটি সাধারণ শেল স্ক্রিপ্ট পরীক্ষা করেছি যা আমি পশ্চাদপটে শুরু করেছি; এটি লুপ করা এবং একটি অস্থায়ী ফাইলে আউটপুট প্রেরণ করে। আমি টার্মিনালটি থেকে বেরিয়ে আসার পরে এটি চলতে থাকবে ( tail -fটেম্প ফাইল দ্বারা এটি দেখা যায় । এটি সেন্টস 7.1 মেশিনে ব্যাশ ব্যবহার করে
মাইক এস

@ মাইকস - দয়া করে প্রদর্শন করুন। আপনার বর্ণনার আচরণ আমি কখনও দেখিনি
ওয়ারেন

@ ওওয়ারেন - আমার উত্তরটি সার্ভারফ্রন্ট / প্রশ্ন / 117152/… দেখুন । নোট করুন যে বেশিরভাগ লোক আচরণের দাবি করেছেন যা আপনি বর্ণনা করেছেন তার চেয়ে আলাদা; প্রকৃতপক্ষে, ম্যাসিমো অবিকল পোস্ট করেছেন কারণ তাঁর প্রক্রিয়া অব্যাহত ছিল।
মাইক এস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.