সংযোগ বিচ্ছিন্ন হওয়ার পরে চলমান দূরবর্তী এসএসএইচ সেশন এবং প্রক্রিয়াগুলি রাখার 5 উপায়


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

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

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

লিনাক্সে প্রক্রিয়াগুলি বুঝতে

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

এতিম প্রক্রিয়াগুলি হ'ল প্রাথমিকভাবে যার পিতা বা মাতা ছিল যা প্রক্রিয়া তৈরি করেছিল তবে কিছু সময়ের পরে, পিতামাতার প্রক্রিয়াটি অনিচ্ছাকৃতভাবে মারা যায় বা ক্র্যাশ হয়ে পড়ে এবং প্রক্রিয়াটির পিতা-মাতা হয়ে যায়। এই জাতীয় প্রক্রিয়াগুলি তাদের তাত্ক্ষণিক পিতামাতা হিসাবে দীক্ষা করে যা মারা যায় বা শেষ না হওয়া পর্যন্ত এই প্রক্রিয়াগুলির জন্য অপেক্ষা করে।

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

সংযোগ বিচ্ছিন্ন হওয়ার পরে এসএসএইচ অধিবেশন চালনার কৌশল

নীচে বর্ণিত হিসাবে সংযোগ বিচ্ছিন্ন হওয়ার পরে চালানোর বিভিন্ন উপায় থাকতে পারে:

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

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

‘স্ক্রিন’ কমান্ডটি টাইপ করার পরে, আপনি একটি নতুন স্ক্রিন সেশনে থাকবেন, এই সেশনের মধ্যে আপনি নতুন উইন্ডো তৈরি করতে পারবেন, উইন্ডোগুলির মধ্যে ট্রান্সভার করতে পারবেন, স্ক্রিনটি লক করতে পারবেন এবং আরও অনেক কিছু করতে পারেন যা আপনি সাধারণ টার্মিনালে করতে পারেন।

$ screen

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

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

দূরবর্তী টার্মিনাল থেকে একটি পর্দা বিচ্ছিন্ন করতে, কেবল “Ctrl + a” টিপুন সাথে সাথে “d” টিপুন এবং আপনি স্ক্রিনের বার্তাটি দেখে টার্মিনালে ফিরে আসবেন that বিচ্ছিন্ন হয়। এখন আপনি নিরাপদে লগআউট করতে পারেন এবং আপনার অধিবেশনটি জীবিত থাকবে।

আপনি যদি লগ আউট করার আগে ফেলে রেখেছিলেন এমন একটি বিচ্ছিন্ন স্ক্রিন সেশনটি আবার শুরু করতে চান, কেবলমাত্র রিমোট টার্মিনালে পুনরায় লগইন করুন এবং কেবল একটি স্ক্রিন খোলা থাকলে, এবং যদি একাধিক হয় তবে "স্ক্রিন -আর" টাইপ করুন multiple স্ক্রীন সেশনগুলি "স্ক্রিন -আর <পিড.টি.হোস্ট>" চালিত হয়।

$ screen -r
$ screen -r <pid.tty.host>

স্ক্রিন কমান্ড এবং এটি কীভাবে ব্যবহার করা যায় সে সম্পর্কে আরও জানতে লিঙ্কটি অনুসরণ করুন: লিনাক্স টার্মিনাল সেশনগুলি পরিচালনা করতে স্ক্রিন কমান্ড ব্যবহার করুন

টিএমাক্স হ'ল আরেকটি সফ্টওয়্যার যা স্ক্রিনের প্রতিস্থাপন হিসাবে তৈরি করা হয়েছিল। এতে স্ক্রিনের বেশিরভাগ ক্ষমতা রয়েছে, কয়েকটি অতিরিক্ত ক্ষমতা সহ যা এটিকে স্ক্রিনের চেয়ে আরও শক্তিশালী করে তোলে।

এটি স্ক্রিনের দ্বারা প্রদত্ত সমস্ত বিকল্পকে বাদ দিয়ে, একাধিক উইন্ডোর মধ্যে অনুভূমিকভাবে বা উল্লম্বভাবে প্যানগুলি বিভাজন করা, উইন্ডো পেনগুলি পুনরায় আকার দেওয়া, অধিবেশন ক্রিয়াকলাপ পর্যবেক্ষণ, কমান্ড লাইন মোড ব্যবহার করে স্ক্রিপ্টিং ইত্যাদির কারণে tmux এর এই বৈশিষ্ট্যের কারণে এটি প্রায় বিস্তৃত গ্রহণ উপভোগ করছে সমস্ত ইউনিক্স বিতরণ এবং এমনকি এটি ওপেনবিএসডি-র বেস সিস্টেমের অন্তর্ভুক্ত করা হয়েছে।

রিমোট হোস্টে ssh করার পরে এবং tmux টাইপ করার পরে, আপনি সামনে একটি নতুন উইন্ডো খোলার সাথে একটি নতুন সেশনে প্রবেশ করবেন, যেখানে আপনি সাধারণ টার্মিনালে যা কিছু করতে পারেন can

$ tmux

টার্মিনালে আপনার ক্রিয়াকলাপ সম্পাদন করার পরে, আপনি এই সেশনটি নিয়ন্ত্রণকারী টার্মিনাল থেকে আলাদা করতে পারেন যাতে এটি পটভূমিতে যায় এবং আপনি নিরাপদে লগআউট করতে পারেন।

হয় আপনি tmux অধিবেশন চলাকালীন “tmux detach” চালাতে পারেন বা শর্টকাট (Ctrl + b এর পরে ডি) ব্যবহার করতে পারেন। এর পরে আপনার বর্তমান অধিবেশনটি আলাদা করা হবে এবং আপনি আপনার টার্মিনালে ফিরে আসবেন যেখানে আপনি নিরাপদে লগ আউট করতে পারবেন।

$ tmux detach

আপনি সিস্টেমটি লগ আউট করার সময় আপনি যে সেশনটি আলাদা করে রেখেছিলেন এবং যেমনটি রেখে গিয়েছিলেন তার পুনরায় খোলার জন্য, কেবল রিমোট মেশিনে পুনরায় লগইন করুন এবং বন্ধ সেশনে পুনরায় সংযোগ করতে "tmux সংযুক্তি" টাইপ করুন এবং এটি এখনও সেখানে থাকবে এবং চলমান থাকবে ।

$ tmux attach

Tmux এবং এটি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে আরও জানতে লিঙ্কটি অনুসরণ করুন: একাধিক লিনাক্স টার্মিনালগুলি পরিচালনা করতে Tmux টার্মিনাল মাল্টিপ্লেক্সার ব্যবহার করুন।

আপনি যদি স্ক্রিন বা টিএমউক্সের সাথে পরিচিত না হন তবে আপনি নোহপ ব্যবহার করতে পারেন এবং আপনার দীর্ঘ চলমান কমান্ডটি ব্যাকগ্রাউন্ডে প্রেরণ করতে পারেন যাতে কমান্ডটি পটভূমিতে কার্যকর করা অব্যাহত রাখতে পারে। এর পরে আপনি নিরাপদে লগ আউট করতে পারেন।

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

এখানে, একটি সাধারণ দৃশ্যের মধ্যে আমরা নোহুপ ব্যবহার করে ssh সেশনে ব্যাকগ্রাউন্ডে ফাইলগুলি অনুসন্ধান করার জন্য কমান্ড সন্ধান করেছি, তারপরে তাত্ক্ষণিকভাবে প্রসেসের পিআইডি এবং কাজের আইডি প্রদানের সাথে সাথে প্রম্পটকে প্রেরণ করা হয়েছিল ([[ জোবিড] পিআইডি)

# nohup find / -type f $gt; files_in_system.out 2>1 &

আপনি যখন আবার লগইন করেন, আপনি কমান্ডের স্থিতিটি পরীক্ষা করতে পারেন, এর অগ্রগতি পর্যবেক্ষণ করতে fg% JOBID ব্যবহার করে এটিকে আবার অগ্রভাগে ফিরিয়ে আনতে পারেন। নীচে, আউটপুটটি দেখায় যে কাজটি পুনরায় লগইনে না দেখায় কাজটি সম্পন্ন হয়েছিল এবং প্রদর্শিত আউটপুট দিয়েছে।

# fg %JOBID

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

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

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

নীচে, আমরা ব্যাকগ্রাউন্ডে পিং কমান্ডটি প্রেরণ করেছি যাতে আপনি চালিয়ে যেতে পারেন এবং কাজের তালিকা থেকে সরানো যায়। যেমন দেখা গেছে, কাজটি প্রথমে স্থগিত করা হয়েছিল, এরপরে এটি এখনও প্রক্রিয়া আইডি: 15368 হিসাবে কাজের তালিকায় ছিল।

$ ping linux-console.net > pingout &
$ jobs -l
$ disown -h %1
$ ps -ef | grep ping

এর পরে অস্বীকৃত সিগন্যালটি চাকরিতে স্থান পেয়েছিল এবং এটি পটভূমিতে চলমান থাকা সত্ত্বেও এটি চাকরি তালিকা থেকে সরানো হয়েছিল। কাজটি তখনও চলমান থাকবে যখন আপনি নীচের মত দেখতে রিমোট সার্ভারে পুনরায় লগইন করবেন।

$ ps -ef | grep ping

প্রয়োজনীয় আচরণ অর্জনের জন্য আরেকটি ইউটিলিটি হ'ল সেটাইড। প্রক্রিয়াটির প্রক্রিয়া গ্রুপটি একই থাকে তাই নোহুপের একটি অসুবিধা রয়েছে তাই নোহুপের সাথে চলমান প্রক্রিয়াটি পুরো প্রক্রিয়া গোষ্ঠীতে প্রেরিত কোনও সংকেতের পক্ষে ঝুঁকির মধ্যে রয়েছে (যেমন সিটিআরএল + সি )।

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

এখানে এটি দেখায় যে ‘স্লিপ 10 মি’ প্রক্রিয়াটি তৈরির সময় থেকেই নিয়ন্ত্রণকারী টার্মিনাল থেকে আলাদা করা হয়েছে।

$ setsid sleep 10m
$ ps -ef | grep sleep

এখন, আপনি যখন সেশনটি পুনরায় লগইন করবেন, আপনি এখনও এই প্রক্রিয়াটি চলমান পাবেন।

$ ps -ef | grep [s]leep

উপসংহার

আপনি এসএসএইচ সেশন থেকে লগআউট করার পরেও কীভাবে আপনার প্রক্রিয়াটি চালিয়ে যাওয়ার চিন্তা করতে পারেন? আপনি যদি ভাবতে পারেন এমন কোনও আর কার্যকর উপায় আছে তবে আপনার মন্তব্যে উল্লেখ করুন।