"<কম্যান্ড> & অস্বীকার" এবং "নোহোপ <কম্যান্ড> & অস্বীকার" এর মধ্যে পার্থক্য


41

এই ব্যবহার সম্পর্কে আমার বোঝার &, disownএবং nohup:

  • <command>: টার্মিনাল বর্তমান মধ্যে প্রক্রিয়া চালায় bash, উদাহরণস্বরূপ পুরোভূমিতে (অর্থাত প্রক্রিয়া একটি হিসেবে তালিকাভুক্ত করা হয় bashফোরগ্রাউন্ড কাজ এবং stdin, stdoutএবং stderrএখনও টার্মিনালে আবদ্ধ ); হ্যাঙ্গআপগুলিতে অনাক্রম্য নয় ;
  • <command> &: টার্মিনাল বর্তমান মধ্যে প্রক্রিয়া চালায় bash, উদাহরণস্বরূপ পটভূমিতে (অর্থাত প্রক্রিয়া একটি হিসেবে তালিকাভুক্ত করা হয় bashপটভূমি কাজ এবং stdin, stdoutএবং stderrএখনও টার্মিনালে আবদ্ধ ); হ্যাঙ্গআপগুলিতে অনাক্রম্য নয় ;
  • <command> & disown: টার্মিনাল বর্তমান মধ্যে প্রক্রিয়া চালায় bash, উদাহরণস্বরূপ পটভূমিতে কিন্তু প্রক্রিয়া থেকে বিচু্যত bash'র কাজ তালিকায় (অর্থাত প্রক্রিয়া হিসেবে তালিকাভুক্ত করা হয় না bashফোরগ্রাউন্ড / পটভূমি কাজ এবং stdin, stdoutএবং stderrএখনও টার্মিনালে আবদ্ধ ); হ্যাঙ্গআপগুলিতে অনাক্রম্যতা ;
  • nohup <command> & disown: টার্মিনাল বর্তমান মধ্যে প্রক্রিয়া চালায় bash, উদাহরণস্বরূপ পটভূমিতে কিন্তু প্রক্রিয়া থেকে বিচু্যত bash'র কাজ তালিকায় (অর্থাত প্রক্রিয়া হিসেবে তালিকাভুক্ত করা হয় না bashফোরগ্রাউন্ড / পটভূমি কাজ এবং stdin, stdoutএবং stderrহয় না এখনো টার্মিনালে আবদ্ধ ) ; হ্যাঙ্গআপগুলিতে অনাক্রম্যতা ;

সুতরাং, সরাইয়া থেকে nohup <command> & disownব্লক করা stdinএবং পুনঃনির্দেশিত stdoutএবং stderrকরতে nohup.outডিফল্টরূপে, এটা আমার কাছে মত এটি সম্পূর্ণই সমতূল্য বিবেচনা করা যেতে পারে বলে মনে হয় <command> & disown

উপরের সব কি ঠিক আছে? কোন ভুল ধারণা?


1
"হ্যাঙ্গআপগুলিতে অনাক্রম্যতা" এবং "হ্যাঙ্গআপগুলিতে অনাক্রম্য নয়" বলতে কী বোঝ?
বিশৃঙ্খলা

2
@ চাওস আমার অর্থ এই যে পিতামাতাকে শেষ করে দেওয়া / হত্যা করা bashপ্রক্রিয়াটিকে হত্যা করবে না
কোস

উত্তর:


32

আপনার বোঝাপড়াটি মূলত সঠিক। উভয়ই disownএবং nohupআপনাকে চলমান কাজ বন্ধ না করে চলমান শেল সেশন থেকে বেরিয়ে যাওয়ার অনুমতি দেওয়ার জন্য ব্যবহৃত হয়। কিছু স্পষ্টতা:

  • চালানোর কোনও কারণ নেই nohup command & disown, nohupএটি ইতিমধ্যে আপনার জন্য অস্বীকার করবে।

  • nohupহয় POSIX দ্বারা সংজ্ঞায়িত যখন disown নয় । এই উপায়ে যখন অনেক শাঁস (যেমন যে bash, zsh, ksh) এটা আছে, অন্যদের (উদাহরণস্বরূপ tcsh, csh, dashএবং sh) এটি থাকবে না।

  • disownএকটি কমান্ড চালু হওয়ার পরে ব্যবহার করা যেতে পারে যখন nohupআগে ব্যবহার করা উচিত।

আমি যতদূর বলতে পারি, দুটি কমান্ডের আসল প্রভাব একই। তাদের প্রত্যেকের বৈশিষ্ট্য রয়েছে যা অন্যটির অভাব রয়েছে (দেখুন help disownএবং man nohup) তবে তাদের মূল কাজটি হ'ল।

এই সরঞ্জামগুলি এবং তাদের মধ্যে পার্থক্যগুলির সম্পর্কে আরও বিস্তারিত আলোচনা করার জন্য উত্তরগুলি এখানে দেখুন:


11
Nohupএবং disownএকই জিনিস নয় এবং উভয় কমান্ড একসাথে ব্যবহার করা অপ্রয়োজনীয় নয়। গভীর বর্ণনার জন্য এই উত্তরটি দেখুন
মেমো

7

আপনার প্রথম থেকে তৃতীয় পয়েন্টগুলি ঠিক মনে হয়, যদিও stdin, stdout and stderr are still bound to the terminalএটি সঠিক ধারণা নয়। stdinসর্বদা এই অর্থে টার্মিনালের সাথে আবদ্ধ যে আপনি সর্বদা টার্মিনাল বা টার্মিনাল ব্যবহারের মাধ্যমে কোনও কমান্ডের মধ্যে ফাইলের নামটি ইনপুট করবেন। stdout and stderr are still bound to the terminalঠিক আছে.

আপনার stdin, stdout and stderr are not still bound to the terminalচতুর্থ পয়েন্টে রয়েছে যা আমার আগের অনুচ্ছেদে উল্লিখিত হিসাবে সঠিক নয়। এছাড়াও আপনি এখানে /dev/nullইনপুট ফাইল হিসাবে ব্যবহার করছেন command, উদাহরণস্বরূপ যদি কমান্ডটি থাকে তবে catআপনি এটি হিসাবে ব্যবহার করছেন cat /dev/null

আপনার 5 ম পয়েন্টে কমান্ডটি সঠিকভাবে দেওয়া হয়নি, আপনি ব্যবহার করেছেন nohup <command> & disown, যখন কোনও nohupবা disownঅন্য একটি ব্যবহার করার প্রয়োজন নেই। তাদের উদ্দেশ্যগুলি একই (এড়িয়ে যাওয়া SIGHUP) তবে তারা কিছুটা ভিন্ন উপায়ে কাজ করে। সুতরাং কমান্ড হিসাবে সহজ করা যেতে পারে nohup <command> &

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.