সংযোগ বিচ্ছিন্ন হওয়ার পরে শেলটি কীভাবে পুনরুদ্ধার করবেন


37

একটি রিমোট সেন্টোস 5.6 মেশিনে কিছু কাজ করছি এবং আমার নেটওয়ার্কটি কমতে থাকে। আমি আবার সংযোগ করার পরে আমার ঝুলন্ত সেশনগুলি পুনরুদ্ধার করার কোনও উপায় আছে কি?

সম্পাদনা: কিছু আপডেট করছি এবং ইয়ামের সাথে ইনস্টল করছি এবং চিন্তিত যে এই সমস্যা হতে পারে যদি প্রক্রিয়াগুলি তারা যা কিছু করছে তার মাঝে ঝুলিয়ে রাখে।


6
tmux বা পর্দা।

উত্তর:


63

কোনও উপায় নেই, তবে এটি প্রতিরোধ করতে আমি ব্যবহার করতে পছন্দ করি tmux। আমি tmux শুরু করি, অপারেশন শুরু করি এবং আমার পথে চলি। আমি যদি ফিরে এসে দেখি যে সংযোগটি ভেঙে গেছে, আমাকে যা করতে হবে তা হ'ল পুনরায় সংযোগ স্থাপন এবং টাইপ করা tmux attach

এখানে একটি উদাহরণ।

$ tmux
$ make <something big>
......
Connection fails for some reason
Reconect

$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]

$ tmux attach -t 0
Back in the tmux sesion

tmux না আছে, এবং আমার কাজ করার তালিকায় নেই এমন জিনিসগুলি ইনস্টল করার অনুমতি নেই ...

5
@sergio আমার হৃদয় রক্তপাত :-)) ব্যবহার করুন screen

4
@sergio একটি ইউনিক্স সিস্টেমে কার্যত এমন কোনও অ্যাপ্লিকেশন যা চালানোর জন্য রুট অনুমতি প্রয়োজন হয় না সেগুলি হোম ডিরেক্টরিতে ইনস্টল করা যেতে পারে।
কুসালানন্দ

35

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


ঠিক আছে. এটা এখন পরিষ্কার।

ধরে নেওয়া যাক ইস প্রক্রিয়া এখনো সঞ্চালিত হয় (অবিলম্বে বিনষ্ট করা হয়নি যখন শেল SIGHUP পেয়েছিলাম), reptyr বা অনুরূপ পারে প্রক্রিয়া পুনরুদ্ধার করতে যথেষ্ট হতে পারে অথবা that-- ভবিষ্যতে কোনো আউটপুট প্রাপ্ত --failing। যদিও শেলটি সাধারণত সংযোগ বিচ্ছিন্ন হয়ে গেলে সমাপ্ত হবে।
22:58

@ ইওরেন আপনার অর্থ, এমনকি টিএমউক্স ব্যবহার করেও, সংযোগটি হারিয়ে যাওয়ার পরে ওএস tmux প্রক্রিয়াটি বন্ধ করবে?
দোজো

@ ডোজো সংযোগটি বন্ধ হয়ে গেলে, টিএমউक्स উদাহরণটি বন্ধ হয়ে যাবে, তবে টিএমউक्स সেশন (এবং এটি পরিচালনা করে এমন শেলস) আপ থাকবে।
উইলিয়াম পার্সেল

যদি ব্যবহারকারী রিমোট এসএস সার্ভারের সাথে সংযোগটি হারিয়ে ফেলেন কারণ উদাহরণস্বরূপ তিনি হঠাৎ দুর্ঘটনাক্রমে আরজে -45 ক্যাবলটি প্লাগ লাগিয়ে দিয়েছেন, আমি মনে করি যে এসএসএস সার্ভারটি পূর্ব নির্ধারিত সময়সীমা (উদাহরণস্বরূপ 120 সেকেন্ড) অবধি এই সেশনটি রাখবে। সুতরাং এক্ষেত্রে, কেবলটি প্লাগ লাগানোর পরে 120 সেকেন্ডের মধ্যে এসএসএস সার্ভারের পাশে থাকা এই সেশনটি আবার চালু করার কোনও উপায় আছে কি?
গ্যাব 好人 好人

8

উইলিয়াম যেমন বলেছিলেন, সংক্ষিপ্ত উত্তর হ'ল না, উপায় নেই is এটি রোধ করতে আপনি সংযোগ হারানোর আগে স্ক্রিন কমান্ডটি ব্যবহার করতে পারেন


আমি যা বুঝতে পেরেছি তা থেকে আমাকে স্ক্রিন দিয়ে দীক্ষা দিতে হবে ... ভাল, আমি করিনি। আমি এটি পুনরায় চালাতে পারি না এটি বলে যে এটি এখনও ব্যবহৃত হচ্ছে এবং আমি এটি মেরে জোর করতে চাই না। .. আমি কীভাবে চলমান ইয়মের নিয়ন্ত্রণ ফিরে পেতে পারি?

এবং Byobu পর্দায় একটা চমৎকার সম্পূরক, এটি স্বয়ংক্রিয়ভাবে একটা চমৎকার গ্রাফিক্যাল টার্মিনাল চালু করতে launchpad.net/byobu

যতদূর আমি জানি আপনি পারবেন না, যদি না yum কমান্ড থেকে আউটপুটটিকে আপনার বর্তমান মেয়াদী অধিবেশনে পুনঃনির্দেশ করার কোনও গোপন উপায় না থাকে তবে আমি আমার মাথার উপরের অংশের দিক থেকে কোনওটি ভাবতে পারি না।
নিকোলাস স্মিথ

ডিবাগার এবং সি ব্যবহার করে এর বেশ কয়েকটি আংশিক সমাধান রয়েছে। একটি প্রক্রিয়া একটি নতুন অভিভাবক শেল দিতে। রেপটায়ার হ'ল একটি, এবং একটি ব্লগ পোস্ট বিষয়টি, কর্মক্ষেত্র এবং কিছু অন্যান্য বাস্তবায়ন বর্ণনা করে।
22

3

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

এটি অর্জনের জন্য, "nohup" এবং "অস্বীকার করুন" কমান্ডগুলি ব্যবহার করুন, যা সাধারণত বেশিরভাগ শেলগুলিতে বিল্টিন কমান্ড হয়, অর্থাত আপনার কোনও কিছু ইনস্টল করার দরকার নেই। এটি কেবল অ-ইন্টারেক্টিভ কমান্ডের জন্যই কাজ করে।

সুতরাং, পদক্ষেপগুলি নিম্নলিখিত হবে:

  1. সার্ভারে লগইন করুন
  2. আপনার কমান্ডটি চালান: "nohup sudo yum update &" (এটি আপনার বর্তমান ডিরেক্টরিতে nohup.out ফাইলটিতে সমস্ত আউটপুট লগ করবে)
  3. "% 1 অস্বীকার করুন" চালান
  4. এই মুহুর্তে সংযোগ বিচ্ছিন্ন বা সংযোগ বিচ্ছিন্ন হওয়ার জন্য অপেক্ষা করুন :)

আপনি যখন সার্ভারে ফিরে আসেন, কমান্ডটি কীভাবে কাজ করছে তা দেখতে কেবল "লেজ নোহআপ.আউট"।


এটি সাধারণ ক্ষেত্রে খুব খারাপভাবে কাজ করবে না ? উদাহরণস্বরূপ, কমান্ডগুলি যা এক সময় বা অন্য সময়ে ইনপুট চায় ... সম্পূর্ণ অ-ইন্টারেক্টিভ কমান্ডগুলির জন্য, এটি যথেষ্ট ভাল কাজ করতে পারে এবং একটি টার্মিনাল মাল্টিপ্লেজারের ওভারহেড (এবং সম্ভবত ইনস্টল করার প্রয়োজন হয়) এড়াতে পারে।
একটি সিভিএন

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

অবশ্যই, এটি একটি বৈধ উত্তর, এর সম্ভাব্য ব্যবহারের ক্ষেত্রে কিছুটা সীমিত। সম্পাদনা দ্বারা upvated।
একটি সিভিএন

3

কেউ উত্তর চেয়ে বরং একটি মন্তব্যে reptyr যোগ করেছেন তাই আমি এটি upvote করতে পারবেন না, তবে এটি সম্পাদিত প্রশ্নের একটি ভাল উত্তর বলে মনে হচ্ছে এবং CentOS এ দুর্দান্ত কাজ করেছে।

দেখুন: https://github.com/nelhage/reptyr https://www.ostechnix.com/reptyr-move-running-process-new-terminal/

আমি আবার সংযোগ করার পরে আমার ঝুলন্ত সেশনগুলি পুনরুদ্ধার করার কোনও উপায় আছে কি?

সম্পাদনা: কিছু আপডেট করছি এবং ইয়ামের সাথে ইনস্টল করছি এবং চিন্তিত যে এই সমস্যা হতে পারে যদি প্রক্রিয়াগুলি তারা যা কিছু করছে তার মাঝে ঝুলিয়ে রাখে।

একই জিনিস, আমি একটি yum আপডেট সেশনে দূরবর্তী সংযোগ হারিয়েছি। সুতরাং আমি এই প্রশ্নটি অনুসন্ধান করে খুঁজে পেয়েছি ... তারপরে এবার সংযুক্ত হয়ে পর্দাটি ব্যবহার করেছি:

  1. পুনঃসংযোগ ssh
  2. পর্দা
  3. উপরের লিঙ্ক অনুযায়ী reptyr ইনস্টল করুন
  4. PS -a | গ্রেপ ইয়াম
  5. reptyr psid

এবং সেখানে আমি পুনরুদ্ধার করা প্রম্পটে যা যা আপনি কয়েক ঘন্টা আগে দিয়েছিলেন।

প্রযুক্তিগতভাবে উত্তরগুলি সমস্ত সঠিক, এটি একটি স্তব্ধ অধিবেশন পুনরুদ্ধার নয়, এটি অনাথ প্রক্রিয়াটিকে বর্তমান সেশনে পুনর্বার করা। এবং এটি খুব দরকারী ...


1

অনেক লোক যেমন পরামর্শ দিয়েছে screenএবং tmuxতারা উভয়ই মৌলিক কার্যকারিতা সমর্থন করে তবে স্বতন্ত্র নির্দিষ্ট বৈশিষ্ট্য রয়েছে, তাই কেউ বলতে পারেন না যে সব ক্ষেত্রেই একজন অন্যের চেয়ে শ্রেষ্ঠ। উদাহরণস্বরূপ, কেবল tmux উইন্ডো-বিভাজন সমর্থন করে , কেবলমাত্র জিএনইউ স্ক্রিনটি (Ctrl + ar) দিয়ে দীর্ঘ লাইন মোড়কে টগল করতে পারে । আরও বিস্তারিত তুলনা এখানে দেখুন

Ssh এর এই সমস্যাটি সমাধান করার জন্য বিশেষত সরঞ্জামগুলি রয়েছে:

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

মোশ হ'ল একটি রিমোট টার্মিনাল অ্যাপ্লিকেশন যা রোমিংয়ের অনুমতি দেয়, বিরতিযুক্ত সংযোগ সমর্থন করে এবং বুদ্ধিমান স্থানীয় প্রতিধ্বনি এবং ব্যবহারকারী কীস্ট্রোকের লাইন সম্পাদনা সরবরাহ করে। মোশ এসএসএইচের প্রতিস্থাপন। এটি আরও দৃust় এবং প্রতিক্রিয়াশীল, বিশেষত ওয়াই-ফাই, সেলুলার এবং দীর্ঘ-দূরত্বের লিঙ্কগুলির মাধ্যমে।


-1

এটি tmuxশেল ব্যবহার করে করা যেতে পারে । যদি আপনি সংযোগ বিচ্ছিন্ন হয়ে থাকেন তবে কোনও সেশন পুনরায় সংযোগ করার দ্রুততম উপায় হ'ল:

tmux a #0

এটি এমন কোনও কিছুই যুক্ত করে যা গৃহীত উত্তর বলে না। এটি ধরেও নিয়েছে যে ইতিমধ্যে ব্যবহারকারীর একটি tmuxসেশন চলছে।
Kusalananda

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