বাশ / জেডএসএইচ: 'অস্বীকার' পূর্বাবস্থায় ফেরা


30

শেলস জব টেবিলে 'অস্বীকৃত' হওয়ার পরে কোনও প্রক্রিয়া কী 'পুনরায় সংযুক্ত' করার উপায় আছে?

সম্পাদনা করুন: EN সার্চগিন আমাকে পুরোপুরি ব্যর্থ করে। খুব ভাল দেখাচ্ছে না।

উত্তর:


16

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

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

এটি যেমন শোনাচ্ছে ততই বোঝা যাচ্ছে, এটি "এমন করবেন না!" এর উত্তরে সত্যিই ফুটে উঠেছে।


1
এটি সঠিক হতে পারে না: পিতামাতার প্রক্রিয়াটি প্রস্থান করে ছাড়া শিশুকে গ্রহণ করতে পারে না। আপনি যে আচরণটি বর্ণনা করেছেন তা শিশু প্রক্রিয়া থেকেই চালিত করতে হবে (বা কার্নেল দ্বারা, যা পিতামাতার মৃত্যুর পরে স্বয়ংক্রিয়ভাবে এর কিছু করে)। একটি প্রক্রিয়া স্বেচ্ছায় কোনও শিশুকে গ্রহণ করতে পারে না তবে এটি একটিও ছেড়ে দিতে পারে না।
গিলস 'অশুভ হওয়া বন্ধ করুন'

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

@ লোলিক্স হ্যাঁ, তবে আপনি যখন শেলটি ছেড়ে দিলে আপনি এটিকে অস্বীকার করেন, তারপরে এটি পিপিড ১ পায় so সুতরাং আপনার যুক্তিটি বৈধ। তারা যেভাবেই প্রস্থান করতে না
পারলে

1
দুঃখিত, তবে এই উত্তরটি ভুল। কেবল ব্যবহার করুন reptyr(ব্যবহারের উদাহরণের জন্য আমার উত্তর দেখুন)।
খ্রিস্টান পাইটস

18

যদিও আমি ধরে নিয়েছি এটি ভুল প্রক্রিয়াটি অস্বীকার করার দুর্ভাগ্যজনক পরিস্থিতিতে কাউকে সহায়তা করে না, যদি আপনি আপনার কর্মপ্রবাহ থেকে অস্বীকৃতি উপেক্ষা করে এটিকে প্রতিস্থাপন করেন:

https://github.com/nelhage/reptyr

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


2
ঠিক আছে, আমি reptyr এর সাথে আমার অস্বীকৃত ভিএম প্রক্রিয়াটি ফিরে পেয়েছি, সুতরাং এটি যে অন-অস্বীকৃত ইউটিলিটিটি আমি খুঁজছিলাম তার মতোই কাজ করেছে।
hlovdal

আপনি ঠিক বলেছেন, @ হ্লোভডাল: এই উত্তরটি অর্ধ-ভুল। reptyrসমাধানটি, তবে ব্যবহার বন্ধ করার দরকার নেই disown। স্পষ্টতার জন্য, আমি একটি নতুন উত্তর লিখেছি।
খ্রিস্টান পাইটস

11

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

pgrep -f DISOWNED_PROCESS  # to find out the PID of the disowned process
reptyr PID                 # insert this PID here

2
(sudo apt-get ইনস্টল reptyr) তারপরে প্রথম প্রয়াসে এটি পেয়েছে: "কার্নেল সংযুক্ত করার সময় অনুমতি অস্বীকার করেছে। যদি আপনার ইউআইডি লক্ষ্যটির সাথে মেলে তবে / proc / sys / kernel / yama / ptrace_scope এর মানটি পরীক্ষা করুন। আরও তথ্যের জন্য দেখুন /etc/sysctl.d/10-ptrace.conf "আমি উভয় অবস্থানের মান 1 থেকে 0 এ পরিবর্তন করেছি এবং এটি কার্যকর হয়েছে। আমি একই ব্যবহারকারীর হিসাবে একটি প্রক্রিয়াটির অস্বীকার করা এবং পুনরায়কার পরীক্ষা করেছি (উবুন্টু 14.04 এলটিএস-এ আইপথন নোটবুক)। সম্ভবত এটি একটি বিচ্ছিন্ন পরিবেশে উন্নয়নের জন্য ঠিক আছে ... তবে নিশ্চিত নয় যে পরিবর্তনের চূড়ান্ত সুরক্ষা ব্যবস্থা রয়েছে। হয়তো দক্ষতার সঙ্গে কেউ ঐকতান পারবেন না।
FizxMike

1

দুঃখিত, না। নীতিগতভাবে, এটি সম্ভব হবে, যেহেতু অস্বীকার করা কেবল কিছু শেল অভ্যন্তরীণ অবস্থার পরিবর্তন করে - এটি মূলত একটি তালিকা থেকে প্রক্রিয়া আইডিটি সরিয়ে দেয় এবং খুব বেশি ঝামেলা ছাড়াই এটি ফিরিয়ে দেওয়া যেতে পারে (আপনি এটি পরীক্ষা করার ক্ষেত্রে কিছুটা সতর্ক থাকতে হবে) রিট্যাচড পিডটি সঠিক অধিবেশনটিতে রয়েছে তবে তা দুর্দম নয় not তবে সাধারণ শেলগুলির (বাশ, কেএসএস, টিসিএস, জেডএস) কোনওটিই পুনরায় যুক্ত করার উপায় বলে মনে হয় না। (যদিও zsh এর সাহায্যে আপনি jobstates, jobdirsএবং jobtextসহযোগী অ্যারেগুলিতে লিখতে পারেন ; আপনি জানেন না যে আপনি কতটা অর্জন করতে পারেন))

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


0

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


6
পরিস্থিতিগুলি হ'ল: আপনি ভুল প্রক্রিয়াটি অস্বীকার করে এটিকে ফিরে পেতে চান।
nisc

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