টার্মিনাল এবং অন্যান্য না করে যখন '&' ব্যবহার করে টার্মিনাল থেকে কিছু প্রোগ্রাম চলছে কেন?


27

আমি কেবল ভাবছিলাম, উদাহরণস্বরূপ যখন আমি এর সাথে চালু করব qtox:

qtox &

এবং তারপরে টার্মিনালটি qtoxবন্ধ করে এটি বন্ধ করে দেয়। তবে যখন etherapeব্যবহার করে চলমান :

sudo etherape &

টার্মিনালটি বন্ধ করে ইথেরেপে কোনও সমস্যা বা সমস্যা সৃষ্টি করে না। এবং বিভিন্ন অ্যাপ্লিকেশনগুলির মধ্যে বিভিন্ন আচরণ রয়েছে, কিছু টার্মিনাল যখন বন্ধ করে, অন্যরা না করে, কীভাবে আসে? অন্যেরা না করলে কেন কিছু ঘনিষ্ঠ হয়? আমি জিনোম ৩.১৮ সহ উবুন্টু জিনোম 15.10 চালাচ্ছি।


1
এমন কি হতে পারে যে আপনি একটি টার্মিনাল খোলেন, আপনি Qtox চালান, আপনি টার্মিনালটি বন্ধ করে দেন, সবাই! তবে দ্বিতীয়টি আপনি টার্মিনালটি খোলেন, সুডো ইথেরেপ চালান, এখন আপনি আপনার টার্মিনালটি বন্ধ করে দিচ্ছেন, তবে সুডো বন্ধ না হওয়া অবধি চলতে থাকবে?
কেন মোলার্প

ভাল, আপনি qtoxটার্মিনালটি বন্ধ করার সময় যদি আপনি প্রস্থান করতে না চান তবে আপনি সর্বদা এটি চালাতে পারেন nohup qtox &
টেরেন্স

@ টার্নেন্স: আচ্ছা, এই প্রশ্নে আমি বিশেষত জিজ্ঞাসা করছিলাম কেন, কীভাবে নয় ... এটি আমার অন্যান্য প্রশ্ন হবে ... :)

1
পছন্দ করুন আমার খারাপ। =)
টেরেন্স

উত্তর:


36

আপনি যখন কোনও টার্মিনালটি বন্ধ করেন তখন টার্মিনাল শেলটিতে একটি SIGHUP সংকেত প্রেরণ করে; শেলটি ঘুরে ফিরে তার সমস্ত শিশু প্রক্রিয়া গোষ্ঠীতে একটি সিএইচইচইপ সংকেত প্রেরণ করে, যার মধ্যে ব্যাকগ্রাউন্ড প্রক্রিয়া গ্রুপ রয়েছে;

প্রতিটি একক প্রক্রিয়া কীভাবে সিগন্যালে প্রতিক্রিয়া জানাবে তা সম্পূর্ণ প্রক্রিয়া নির্ভর করে: যদি প্রক্রিয়াটি সিগন্যালের জন্য কোনও হ্যান্ডলার সংজ্ঞায়িত না করে এবং কার্নেলটিকে (যেমন কিছু সিস্কেলের মাধ্যমে signal()বা sigaction()এটি) পরিচালনা করতে ইচ্ছুক করে না, তবে কার্নেলটি কার্যকর করে সিগন্যালের জন্য ডিফল্ট হ্যান্ডলার, যা একটি সিগআপ সংকেত ক্ষেত্রে প্রক্রিয়াটি সমাপ্ত করে।

যাইহোক, আপনি যখন কোনও কমান্ড দিয়ে চালাবেন sudo, sudoপ্রক্রিয়াটির ইউআইডি এবং এর শিশু প্রক্রিয়াটি 0(রুট) সেট করা আছে ; সাধারণভাবে, সিগন্যাল প্রেরণের প্রক্রিয়াটির ইউআইডি 0(রুট) বা লক্ষ্য প্রক্রিয়াটির সমান না হলে, কার্নেল সিগন্যালটি বাতিল করে (যেমন: প্রক্রিয়াটি অন্য ব্যবহারকারীর মালিকানাধীন কোনও প্রক্রিয়াতে সংকেত প্রেরণ করতে পারে না, যদি না প্রক্রিয়া না হয় সংকেত প্রেরণ মূলের মালিকানাধীন); এজন্য টার্মিনাল দ্বারা চালিত ব্যাশ ইনস্ট্যান্সের মতো একটি ব্যবহারকারী-চালিত প্রক্রিয়া কোনও sudoপ্রক্রিয়া সাইনআপ করতে পারে না এবং শেষ পর্যন্ত, টার্মিনালটি বন্ধ করা শুরু হওয়া প্রক্রিয়াটিকে প্রভাবিত করে না sudo


7
আর সে জন্যই আমরা প্রয়োজন nohupসেই কমান্ড যে SIGHUP :) Upgoated সঙ্গে ঘনিষ্ঠ না সামনে
Sergiy Kolodyazhnyy

9
আমার মনে হয় এর কোন জাদু নেই sudosudoকেবলমাত্র অন্য ব্যবহারকারী হিসাবে কমান্ড চালায় এবং আপনি অন্যান্য ব্যবহারকারীর প্রক্রিয়াগুলিতে সংকেত পাঠাতে পারবেন না। দেখুন man 2 kill
el.pescado

@ el.pescado তাই কি sudoএকরকম দরিদ্র মানুষ nohup?
হেগেন ভন ইটজেন

7
@HagenvonEitzen আপনি যদি চান, কিন্তু আমি অত্যন্ত কমান্ড প্রয়োজন হয় না যে চলমান থেকে বিরত চাই sudoসঙ্গে sudoতার জন্য nohupপার্শ্ব প্রতিক্রিয়া তবে অন্যান্য সমস্ত মূল্যবান বিবেচিত।
কোস

2
@ সার্জ আমাদের দরকার নেই nohup, এটির nohup.outপরে অনাবদ্ধ ফাইল তৈরি করে। বরং disownবিল্টিন কমান্ড ব্যবহার করুন ।
রুসলান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.