লগআউট করার পরে একটি লিনাক্স প্রক্রিয়া চালিয়ে রাখা


142

আমি এসএসএইচ এর মাধ্যমে একটি লিনাক্স মেশিনে সংযোগ করছি, এবং আমি একটি ভারী বাশ স্ক্রিপ্ট চালানোর চেষ্টা করছি যা ফাইল সিস্টেম অপারেশন করে। এটি ঘন্টার পর ঘন্টা চলতে থাকবে বলে আশা করা হচ্ছে, তবে আমার কাছে থাকা ইন্টারনেট সংযোগের কারণে আমি এসএসএইচ সেশনটি খোলা রাখতে পারি না।

আমি সন্দেহ করি যে ব্যাকগ্রাউন্ড অপারেটর, এম্পারস্যান্ড ( &) দিয়ে স্ক্রিপ্টটি চালানো কৌশলটি করবে, কারণ আমি চেষ্টা করেছিলাম এবং পরে দেখেছি যে প্রক্রিয়াটি সম্পূর্ণ হয়নি। আমি কীভাবে লগআউট করব এবং প্রক্রিয়াটি চালিয়ে যেতে পারি?

উত্তর:


135

টার্মিনাল মাল্টিপ্লেক্সারে প্রক্রিয়া শুরু করা সবচেয়ে ভাল পদ্ধতি। বিকল্পভাবে আপনি প্রক্রিয়াটি এইচওপি সংকেত গ্রহণ না করতে পারেন।


একটি টার্মিনাল মাল্টিপ্লেক্সার "ভার্চুয়াল" টার্মিনাল সরবরাহ করে যা "রিয়েল" টার্মিনাল থেকে স্বতন্ত্রভাবে চালিত হয় (আসলে আজকের সমস্ত টার্মিনাল "ভার্চুয়াল" তবে এটি অন্য দিনের জন্য অন্য বিষয়)। আপনার আসল টার্মিনালটি আপনার এসএস সেশনে বন্ধ থাকলেও ভার্চুয়াল টার্মিনালটি চলতে থাকবে।

ভার্চুয়াল টার্মিনাল থেকে শুরু সমস্ত প্রক্রিয়া সেই ভার্চুয়াল টার্মিনাল দিয়ে চলতে থাকবে। আপনি সার্ভারের সাথে পুনরায় সংযোগ স্থাপন করার সময় আপনি ভার্চুয়াল টার্মিনালের সাথে পুনরায় সংযোগ করতে পারেন এবং যা কিছু ঘটেছিল তা ব্যতিরেকে সমস্ত কিছুই এমন হবে।

দুটি জনপ্রিয় টার্মিনাল মাল্টিপ্লেক্সার হ'ল স্ক্রিন এবং টিএমউক্স

স্ক্রিন একটি খাড়া লার্নিং বক্ররেখা আছে। চিত্রটির ধারণাটি ব্যাখ্যা করার সাথে একটি ভাল টিউটোরিয়াল এখানে দেওয়া হয়েছে: http://www.ibm.com/developerworks/aix/library/au-gnu_screen/


Hup সংকেত (অথবা SIGHUP) তার সব সন্তান প্রক্রিয়াগুলিতে টার্মিনাল দ্বারা প্রেরিত যখন টার্মিনাল বন্ধ করা হয় করা হয়। SIGHUP পাওয়ার পরে সাধারণ ক্রিয়াকলাপটি সমাপ্ত করা। সুতরাং যখন আপনার ssh সেশনটি সংযোগ বিচ্ছিন্ন হয়ে যায় তখন আপনার সমস্ত প্রক্রিয়া শেষ হয়ে যাবে ate এড়াতে আপনি নিজের প্রক্রিয়াগুলি সাইনআপ গ্রহণ না করতে পারেন।

এটি করার দুটি সহজ পদ্ধতি হ'ল nohupএবং disown

কীভাবে nohupএবং কীভাবে disownকাজ করে সে সম্পর্কে আরও তথ্যের জন্য এই প্রশ্ন এবং উত্তরটি পড়ুন: https://unix.stackexchange.com/questions/3886/differences-between-nohup-disown- and

দ্রষ্টব্য: যদিও প্রক্রিয়াগুলি চলতে থাকবে আপনি তাদের সাথে আর যোগাযোগ করতে পারবেন না কারণ তারা আর কোনও টার্মিনালের সাথে সংযুক্ত নেই attached এই পদ্ধতিটি দীর্ঘ চলমান ব্যাচ প্রক্রিয়াগুলির জন্য প্রাথমিকভাবে দরকারী যা একবার শুরু হয়ে গেলে আর কোনও ব্যবহারকারীর ইনপুট লাগবে না।


3
আমি এই উত্তরটি পছন্দ করি কারণ এটি ইন্টারেক্টিভ এবং অ-ইন্টারেক্টিভ উভয় পরিস্থিতিতেই একটি সমাধান সরবরাহ করে। ইন্টারেক্টিভ ক্ষেত্রে, screenআপনাকে আরও অনেকগুলি বিকল্প দেয় , তবে আপনি যদি authorized_keysলোকেদের দ্বারা দূরবর্তী অবস্থানের মাধ্যমে স্ক্রিপ্ট চালানোর অনুমতি ব্যবহার করেন তবে স্ক্রিপ্টটির প্রক্রিয়াগুলি শুরু করার জন্য বিকল্পটি একটি সহজ সহজ উপায় যা তাদের শুরু করার জন্য ব্যবহৃত সেশনটির চেয়ে বেশি দীর্ঘস্থায়ী sshহয় nohupoption ssh
বুথ

1
@ রহমানিসব্যাক - মনে রাখবেন যে আপনি যে কোনও সময় আপনার গৃহীত উত্তর পরিবর্তন করতে পারেন। কেবলমাত্র এখনও পর্যন্ত এরিকার উত্তর সবচেয়ে বেশি ভোট দেওয়া হয়েছে তার অর্থ এই নয় যে এটি আপনার পক্ষে সেরা উত্তর, প্রকৃতপক্ষে এটিকে আপনার স্বীকৃত উত্তর তৈরি করা আরও ভাল লোককে এটি একটি উত্তরের উত্তর হিসাবে ভোট দিতে উত্সাহিত করতে পারে।
মার্ক বুথ

3
* কাশি * tmuxisbetter * কাশি *
ক্র্যাসিক

3
tmux > পর্দা। চেষ্টা করে দেখুন, আপনি আর ফিরে যেতে পারবেন না।
h0tw1r3

1
@ দ্য এলকিউ - বাইবু হ'ল জিএনইউ স্ক্রিন। আপনি এখনও একটি উচ্চ-কাস্টমাইজড .স্ক্রিনসিআরসি দিয়ে পর্দা ব্যবহার করছেন।
EEAA

92

এটি করার কয়েকটি উপায় রয়েছে তবে আমি যেটিকে সবচেয়ে দরকারী মনে করি তা হ'ল জিএনইউ স্ক্রিন ব্যবহার করা ।

আপনি ssh পরে, চালান screen। এটি স্ক্রিনের মধ্যে অন্য শেল চলমান শুরু করবে। আপনার কমান্ড চালান, তারপর একটি Ctrl- a d

এটি আপনাকে স্ক্রিন সেশন থেকে "সংযোগ বিচ্ছিন্ন" করবে। এই মুহুর্তে, আপনি লগ আউট করতে বা আপনার পছন্দ মতো অন্য কিছু করতে পারেন।

আপনি যখন স্ক্রিন সেশনে পুনরায় সংযোগ করতে চান, কেবল screen -RDশেল প্রম্পট থেকে চালান (সেশনটি তৈরি করা একই ব্যবহারকারীর মতো)।


6
স্ক্রিনে পুরো গুচ্ছ কমান্ড রয়েছে, সমস্তই শুরু Ctrl-a দিয়ে। আপনি যদি কেবল একটি অতিরিক্ত শিখেন তবে "Ctrl-a?" দিয়ে শুরু করুন। তারপরে আপনি "Ctrl-a c" এবং "Ctrl-a n"
olafure

@ বিচ্ছিন্ন +1, ধন্যবাদ দেখে মনে হচ্ছে স্ক্রিনটি আমার প্রাথমিক সরঞ্জামবাক্স হতে চলেছে।
doc_id

tmux > পর্দা। চেষ্টা করে দেখুন, আপনি আর ফিরে যেতে পারবেন না।
h0tw1r3

Tmux এর জন্য +1। আমি 5 সপ্তাহ আগে পর্দা ছেড়েছি।
ব্রায়ান হান্ট

73

ইন bash, disownকীওয়ার্ডটি একেবারে উপযুক্ত suited প্রথমে আপনার প্রক্রিয়াটি পটভূমিতে চালান (হয় ব্যবহার করুন &, অথবা ^Zটাইপ করুন bg):

$ wget --quiet http://server/some_big_file.zip &
[1] 1156

টাইপ করে jobsআপনি দেখতে পাচ্ছেন যে প্রক্রিয়াটি এখনও শেলের মালিকানাধীন:

$ jobs
[1]+  Running  wget

আপনি যদি এই মুহুর্তে লগ আউট করেন তবে পটভূমি টাস্কটিও মারা যায়। তবে, আপনি যদি চালনা করেন তবে disownব্যাশ কাজটি আলাদা করে এবং এটি চালিয়ে যাওয়ার অনুমতি দেয়:

$ disown

আপনি এটি নিশ্চিত করতে পারেন:

$ jobs
$ logout

এমনকি আপনি একত্রিত করতে পারেন &এবং disownএকই লাইনে, মত:

$ wget --quiet http://server/some_big_file.zip & disown
$ logout

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


1
এটি একটি খুব ভাল উত্তর, 1+। নোহুপ বা স্ক্রিনের একমাত্র পছন্দ হ'ল বাশের স্বাধীনতা এবং অন্য শেলের সাথে এটি ব্যবহার করা যেতে পারে। আমি যখনই ব্যাশ ব্যবহার করছি তখন আমি আপনার পদ্ধতির সাথে লেগে থাকব।
doc_id

হ্যাঁ - এটি বাশ – নির্দিষ্ট, কারণ ব্যাশ হ'ল আমি একমাত্র শেল ever আমি ভাবছি যে অন্যান্য শেলগুলি অনুরূপ কিছু সমর্থন করে (অর্থাত্ নোহুপ ব্যাকগ্রাউন্ডে লঞ্চ করা) - যদি কেউ অন্য শেলের জন্য অন্য উত্তর পোস্ট করতে পারে তবে এটি দুর্দান্ত astic
জেরেমি ভিজার

1
আমার উত্তর দেখুন এটি কীভাবে কোনও sh-lookalike দিয়ে এটি করবেন তা দেখায়
w00t

1
পরে সিদ্ধান্ত নিতে সক্ষম হওয়ায় +1। এই মুহূর্তে আমার এটির দরকার ছিল। বিজ্ঞাপন হিসাবে কাজ করেছে
কোড_মঙ্ক

37

বেশিরভাগ লিনাক্স বাক্সে উপলব্ধ সরঞ্জাম নোহপ এটি করবে।


1
এটি এখন পর্যন্ত সহজ উত্তর। যে কোনও আউটপুট স্বয়ংক্রিয়ভাবে nohup.out এ পরিচালিত হয় এবং পরে তা পরীক্ষা করা যায়।
জুলিয়ান

3
নোহুপের মোটেও zsh এর দরকার নেই।
অ্যারন ব্রাউন

নোহুপ সঠিক উত্তর, এটি কোনও হ্যাঙ্গআপের জন্য সংক্ষিপ্ত।
কিনজল দীক্ষিত

2
নোহপ তারপরে স্ক্রিনের অনেক বেশি মেশিনে পাওয়া যায়, সুতরাং এটি কীভাবে ব্যবহার করবেন তা আপনার জানা উচিত।
জেনন

27

পুরোপুরি পুরোপুরি বলতে, আমি tmux নির্দেশ করব , যার পর্দার মতো একই প্রাথমিক ধারণা রয়েছে:

tmux GNU স্ক্রিনের মতো প্রোগ্রামগুলির একটি আধুনিক, BSD- লাইসেন্সযুক্ত বিকল্প হিসাবে চিহ্নিত। প্রধান বৈশিষ্ট্যগুলির মধ্যে রয়েছে:

  • একটি শক্তিশালী, ধারাবাহিক, ভাল-ডকুমেন্টেড এবং সহজে স্ক্রিপ্টযোগ্য কমান্ড ইন্টারফেস।
  • একটি উইন্ডোটি অনুভূমিকভাবে এবং উল্লম্বভাবে প্যানে বিভক্ত হতে পারে।
  • প্যানগুলি অবাধে সরানো এবং পুনরায় আকার দেওয়া বা প্রিসেট লেআউটে সাজানো যেতে পারে।
  • ইউটিএফ -8 এবং 256-রঙের টার্মিনালের জন্য সমর্থন।
  • একাধিক বাফার দিয়ে অনুলিপি করুন এবং আটকান।
  • উইন্ডোজ, সেশন বা ক্লায়েন্ট নির্বাচন করতে ইন্টারেক্টিভ মেনু us
  • লক্ষ্যটিতে পাঠ্য সন্ধান করে বর্তমান উইন্ডোটি পরিবর্তন করুন।
  • টার্মিনাল লক করা, ম্যানুয়ালি বা একটি সময়সীমা পরে।
  • একটি পরিষ্কার, সহজে বর্ধিত, বিএসডি-লাইসেন্সকৃত কোডবেস সক্রিয় বিকাশের অধীনে।

তবে গুগলে অনুসন্ধান করা প্রায় অসীম সহজ।


2
"gnu screen"আপনার অনুসন্ধান ক্যোয়ারী হিসাবে ব্যবহার করা বেশ ভাল কাজ করে।
gnur

4
Tmux এর জন্য +1000!
এমবিকিউ

11

লগআউট করার সময় কেবল প্রক্রিয়া চালিয়ে যাওয়ার জন্য স্ক্রিনটি ওভারকিল হয়।

Dtach চেষ্টা করুন :

dtach হ'ল সি তে লিখিত একটি প্রোগ্রাম যা স্ক্রিনের বিচ্ছিন্ন বৈশিষ্ট্যটি অনুকরণ করে যা একটি পরিবেশকে নিয়ন্ত্রণকারী টার্মিনাল থেকে সুরক্ষিত পরিবেশে সম্পাদন করতে দেয়। উদাহরণস্বরূপ, dtach এর নিয়ন্ত্রণাধীন প্রোগ্রামটি কোনও কারণে টার্মিনাল সংযোগ বিচ্ছিন্ন হওয়ার কারণে প্রভাবিত হবে না।

dtach লেখা হয়েছিল কারণ স্ক্রিনটি আমার প্রয়োজনগুলি যথাযথভাবে মেটেনি; আমার একাধিক টার্মিনাল বা টার্মিনাল এমুলেশন সমর্থন হিসাবে স্ক্রিনের অতিরিক্ত বৈশিষ্ট্যগুলির প্রয়োজন নেই। স্ক্রিনটি খুব বড়, বিশাল ছিল এবং এর সোর্স কোড ছিল যা বোঝা মুশকিল।

প্রোগ্রাম এবং সংযুক্ত টার্মিনালগুলির মধ্যে প্রবাহের অত্যধিক ব্যাখ্যার কারণে স্ক্রিনটি আমার সম্পূর্ণ স্ক্রিন অ্যাপ্লিকেশন যেমন ইমাস এবং আইরিআইআই এর ব্যবহারে হস্তক্ষেপ করে। dtach এর একটি টার্মিনাল এমুলেশন স্তর নেই এবং প্রোগ্রামটির কাঁচা আউটপুট প্রবাহটি সংযুক্ত টার্মিনালগুলিতে পাস করে। ডিটাচ সঞ্চালিত একমাত্র ইনপুট প্রক্রিয়াকরণ হ'ল ডিটাচ চরিত্রের জন্য স্ক্যান করা (যা ডিটিচ প্রোগ্রাম থেকে বিচ্ছিন্ন হওয়ার ইঙ্গিত দেয়) এবং সাসপেন্ড কী (যা ডিটিচকে চলমান প্রোগ্রামকে প্রভাবিত না করে অস্থায়ীভাবে নিজেকে স্থগিত করতে বলে) এবং এটি উভয়ই উভয়ই করতে পারে ইচ্ছা করলে অক্ষম করুন।

স্ক্রিনের বিপরীতে, dtach এর ন্যূনতম বৈশিষ্ট্য রয়েছে এবং এটি অত্যন্ত ক্ষুদ্র। এটি ডিটাচকে বাগ এবং সুরক্ষা গর্তগুলির জন্য আরও সহজে নিরীক্ষণ করার অনুমতি দেয় এবং এটিকে এমন পরিবেশে অ্যাক্সেসযোগ্য করে তোলে যেখানে স্থান সীমাবদ্ধ যেমন রেসকিউ ডিস্কগুলিতে।


ধন্যবাদ. আমি এখানে এসেছি শুধু dtach সম্পর্কে পোস্ট করতে। এটি এখন টার্মিনাল বিচ্ছিন্নতার জন্য আমার কাছে যাওয়ার জিনিস; স্ক্রিনটি খুব বেশি উপায় করে এবং একটি হাস্যকর ডিগ্রিতে ইনপুটটিতে হস্তক্ষেপ করে। ফ্যাক্ট স্ক্রিনটির নিজস্ব টার্মক্যাপের প্রয়োজন খুব আনসেটলিং।
ফ্লাফি

9

কোনও শেল প্রক্রিয়া ডিমনাইজ করার একটি উপায় এখানে, কোনও বাহ্যিক প্রোগ্রামের প্রয়োজন নেই:

( while sleep 5; do date; done ) <&- >output.txt &

তারপরে আপনি যখন আপনার সেশনটি বন্ধ করবেন, তখন কাজটি আউটপুট.টেক্সট ফাইল দ্বারা প্রমাণিত হিসাবে চলতে থাকবে (যার মধ্যে বাফারিং রয়েছে তাই এটি শূন্য-না দেখাতে কিছুটা সময় নেয়)। পরীক্ষার পরে আপনার কাজ হত্যা ভুলবেন না।

সুতরাং আপনাকে যা করতে হবে তা হ'ল ক্লিন স্টিডিন এবং ব্যাকগ্রাউন্ডটি। সত্যিই ভাল হতে হবে, cd /তাই প্রথমে আপনি মাউন্টটি ধরে রাখবেন না।

এটি সোলারিসের অধীনে সাধারণ শিয়েও কাজ করে।


মজাদার. এটি কিছু উল্লেখযোগ্য প্রশ্ন উত্থাপিত। আমি দেখতে পাচ্ছি যে আপনি STDIN সেট করেন নি, -অপারেটর? মধ্যে পার্থক্য কি < /dev/nullএবং &-? আমার ধারণা, STDIN (এবং অন্যরা STDOUT এবং STDERR) কে STDIN এর ক্ষেত্রে ফাইল < fileবা স্ট্রিম নির্ধারণ করতে পারে <& stream< /dev/nullউপরের উদাহরণে এটি কি একই রকম হবে ? এবং -উপরের অপারেটরটি কি নলটিকে প্রবাহ হিসাবে উল্লেখ করে?
doc_id

আপনি যখন x <& - করেন, তখন ফাইল বর্ণনাকারী x বন্ধ করে দেয়। এই ক্ষেত্রে কোনও এক্স নেই, যা ব্যাশকে 1 এ ডিফল্ট করে তোলে, মানে স্ট্যান্ডার্ড ইনপুট। যদি আপনি </ dev / নাল ব্যবহার করেন আপনি স্টিডিন বন্ধ করছেন না, আপনি কেবল ইনপুট হিসাবে প্রোগ্রামকে একটি খালি ফাইল দিচ্ছেন।
w00t

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

2
আমার মনে হয় এর কারণ হ'ল পিতামাতার প্রসেসটি তার সন্তানের স্টিন হ্যান্ডেলটি বন্ধ করে দিলে একটি সিগআপ (প্রকৃত সংকেত যা শেল মারা যাওয়ার পরে বাচ্চা ছাড়তে পারে) ট্রিগার হয়। যাইহোক, যদি স্টিডিন সত্যের পরে বন্ধ হওয়ার পরিবর্তে নালার মতো শুরু হয় তবে বাবা-মার পক্ষে সাইনআপের ট্রিগার করার কোনও উপায় নেই। খুব ভাল, যদিও - এটি কখনও ভাবেন না।
জেরেমি ভিজার

@ জেরেমিভাইজার যে সত্যিই প্রশ্রয়জনক শোনায়!
w00t

7

atকমান্ড অবস্থা এই ধরনের উপযোগী হতে পারে। উদাহরণস্বরূপ, টাইপ করুন:

at now

এবং তারপরে একটি কমান্ড বা কমান্ডগুলির একটি সিরিজ প্রবেশ করতে পারেন যা চালানো হবে। ইমেইলটি মেশিনে সঠিকভাবে সেট আপ করা হলে ফলাফলগুলি আপনাকে ইমেল করা উচিত।

পরিবর্তে now, আপনি একটি তারিখ, বা একটি সময় মত প্রকাশের সাথে বৈকল্পিকভাবে একটি সময় নির্দিষ্ট করতে পারেন now + 15 minutes। দেখুন man atআরো বিস্তারিত জানার জন্য।


7

byobuউবুন্টু স্ক্রিনের একটি দুর্দান্ত ফ্রন্ট-এন্ড। টিপে Ctrl- ?আপনি সমস্ত কীবোর্ড শর্টকাটগুলির একটি তালিকা পান। এটি একটি স্ট্যাটাস বার যুক্ত করে যা সিপিইউ লোড, ডিস্ক স্পেস ইত্যাদি দেখার জন্য কার্যকর হতে পারে। সামগ্রিকভাবে এটি এমন একটি অভিজ্ঞতা সরবরাহ করে যা আমি টার্মিনাল ভিত্তিক ভিএনসি সংযোগ হিসাবে বর্ণনা করব।

nohup ব্যাকগ্রাউন্ডে একটি লগ ফাইলে আউটপুট নিয়ে কাজ শুরু করার অনুমতি দেয়, যা প্রয়োজন না হলে সর্বদা / dev / নাল এ ডাইরেক্ট করা যেতে পারে।

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