আমি কীভাবে কোনও টার্মিনালটিকে বাচ্চাদের হত্যা না করে (প্রথমে `স্ক্রিন running চালানো ছাড়াই) বন্ধ করতে পারি?


35

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

জিনোমের টার্মিনাল গাছটি দেখতে এমন দেখাচ্ছে:

gnome-terminal
    bash
        some-boring-process

ক্যান আমি 'আলাদা' bashথেকে gnome-terminal(আলাদা বা some-boring-processব্যাশ থেকে পুনর্নির্দেশ তার আউটপুট কোথাও)? যদি আমি শুধু হত্যা gnome-terminal, bashতার সমস্ত subprocesses ইচ্ছা মরে যাবে


উত্তর:


48

যদি some-boring-processআপনার বর্তমান বাশ সেশনে চলছে তবে:

  1. ctrl-zআপনাকে বাশ প্রম্পট দেওয়ার জন্য এটি বন্ধ করুন
  2. এর সাথে পটভূমিতে রাখুন bg
  3. কাজের নম্বরটি নোট করুন, বা jobsকমান্ডটি ব্যবহার করুন
  4. এই বাশ সেশন থেকে প্রক্রিয়াটি বিচ্ছিন্ন করুন disown -h %1(সেখানে প্রকৃত কাজের নম্বর বিকল্প দিন)।

এটি আউটপুট পুনর্নির্দেশের জন্য কিছুই করে না - আপনি যখন আপনার বোরিং প্রক্রিয়াটি চালু করবেন তখন আপনাকে এটির কথা ভাবতে হবে। [সম্পাদনা] এটিকে পুনর্নির্দেশ করার একটি উপায় বলে মনে হচ্ছে https://gist.github.com/782263

তবে গুরুত্ব সহকারে পর্দা দেখুন। আমার কাছে দূরবর্তী সার্ভারে শেল রয়েছে যা কয়েক মাস ধরে চলছে।


ধন্যবাদ. আমি আপনার উত্তরটি নির্বাচন করেছি কারণ এটির মধ্যে একমাত্র প্রশ্নের উত্তর ছিল (এটি ইতিমধ্যে চলমান প্রক্রিয়া সম্পর্কে ছিল )। আমি ইতিমধ্যে screenমাঝে মাঝে ব্যবহার করছি , যদিও এটির সমস্যা রয়েছে এবং আমি এটি আমার জীবনের প্রতিটি বাশ সেশনের জন্য ব্যবহার করতে চাই না
ভাল্যা

আপনি এটি প্রতিটি বাশ সেশনের জন্য ব্যবহার করবেন না, তবে প্রতিটি দূরবর্তী মেশিনে যেখানে আপনি প্রচুর সময় ব্যয় করেন।
গ্লেন জ্যাকম্যান

আমি আউটপুট পুনর্নির্দেশ সম্পর্কে তথ্য যুক্ত করার স্বাধীনতা গ্রহণ করেছি, দয়া করে এটি পর্যালোচনা করুন!
ভাল্যা

[মূল @ সার্ভার ~] # বিজি -বাশ: বিজি: বর্তমান: এ জাতীয় কোনও চাকরি নেই
মুহাম্মদ দাস ইয়াসকুর

কেন পেলাম bash: bg: current: no such job?
মুহাম্মদ দাস ইয়াসকুর

10

এটি ঠিক একই জন্য পর্দা এবং tmux তৈরি করা হয়েছিল। আপনি পর্দা / tmux সেশনের অভ্যন্তরে শেলটি চালান, এবং আপনি ইচ্ছায় সংযোগ বিচ্ছিন্ন / পুনরায় সংযোগ করতে পারেন। আপনার একটি জিনোম-টার্মিনালের অভ্যন্তরে একাধিক শেল সেশন চলতে পারে।


ধন্যবাদ, তবে, যেমন আমি গৃহীত উত্তরে মন্তব্য করেছি: ১. প্রশ্নটি ইতিমধ্যে চলমান প্রক্রিয়া সম্পর্কে ছিল। ২. screenএর সমস্যা রয়েছে এবং আমার জীবনের প্রতিটি বাশ সেশনের জন্য এটি ব্যবহার করার মতো মনে হয় না
ভাল্যা

6

screen, tmuxবা dtach(সম্ভবত এর সাথে dvtm) সবগুলি এর জন্য দুর্দান্ত তবে আপনি যদি এমন কিছু ব্যবহার করেন যা আপনি সেগুলির মধ্যে একটিও ব্যবহার করার কথা ভাবেন নি তবে আপনি উপকৃত হতে পারবেন nohup


ধন্যবাদ, তবে, যেমন আমি গৃহীত উত্তরে মন্তব্য করেছি: ১. প্রশ্নটি ইতিমধ্যে চলমান প্রক্রিয়া সম্পর্কে ছিল। ২. screenএর সমস্যা রয়েছে এবং আমার জীবনের প্রতিটি বাশ সেশনে এটি ব্যবহার করার মতো মনে হয় না
ভাল্যা

@valya খুশি আপনি একটি সমাধান খুঁজে পেয়েছি। কেবল পরিষ্কার করার জন্য, তবে বিকল্পটি (যদি উপলভ্য থাকে) nohupব্যবহার করে চলমান প্রক্রিয়াটিতে কাজ করে -p
হ্যাঙ্ক গে

@ হ্যাঙ্ক গে: আমি ম্যান পেজগুলিতে কোনও -pবিকল্প দেখতে পাচ্ছি না nohup; আপনি কি সিস্টেম চালু?
মাইকেল

@ মাইকেল দুশ্চিন্তা বন্ধ করতে এবং ভালোবাসতে শেখার আগে আমি সোলারিস বাক্সে বিকল্পটি tmuxব্যবহার করেছি -p। আমার কাছে এটি একটি মংগ্রিল সেন্টোস বাক্সে করার অস্পষ্ট স্মৃতি রয়েছে (সম্ভবত zshএকটি বিল্টিন রয়েছে যা এটি সমর্থন করে?), তবে আমি এটিতে কোনও ডক্স পাচ্ছি না।
হ্যাঙ্ক গে

@Hank গে: আমরাও bashকিংবা zshআমার উবুন্টু লিনাক্স সিস্টেমে প্রদান nohup
মাইকেল

4

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

এটি যাইহোক, পুনরায় সংযুক্ত অ্যাপ্লিকেশনটির স্ট্যাকের সাথে কিছু অ্যাসেম্বলি কোড স্টিক করা সহ কিছু ভয়াবহ কাজ করে। এবং এই কোডটি x86_64 এর জন্য আপডেট করা হয়নি।

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

পুরোপুরি এখানে আসার কথা ভেবেছি। যদি আপনি ভয়াবহ ভুডো অবলম্বন করতে আপত্তি করেন না, তবে এটি সম্ভাবনার ক্ষেত্রের মধ্যে রয়েছে - কমপক্ষে তাত্ত্বিক সম্ভাবনা।


1
এটি আমাকে gist.github.com/782263 এর কথা মনে করিয়ে দেয় ... ওহ, মনে হয় এটি আমার প্রশ্নেরও উত্তর দেবে
ভাল্যা

2

যদি আমি এমন কোনও কিছু ফায়ার করি যা আমি যা শেষ করতে চাই তবে (সিস্টেম রিবুটটির সংক্ষিপ্ততা না), আমি nohupব্যাকগ্রাউন্ডে এটি ব্যবহার করি এবং চালিত করি। স্ক্রিন এবং এর মতো আপনি প্রক্রিয়াগুলিতে পুনরায় যুক্ত করতে পারবেন না। তবে, অন্য যে কোনও জায়গায় পুনঃনির্দেশ বারিংয়ের মাধ্যমে কোনও আউটপুট পাওয়া যাবে nohup.out

আমি screenযখন কোনও প্রক্রিয়ার জন্য টার্মিনালগুলি স্যুইচ করতে সক্ষম হতে চাই তখন আমি ব্যবহার করি। যেমন বাড়ি / কাজ থেকে কোনও প্রক্রিয়া শুরু করা এবং অন্যটিতে স্যুইচ করা। অন্য যে কোনও টার্মিনাল সেশনের আউটপুটটি বাফারের শীর্ষে স্ক্রোল হয়ে যাবে।

সম্পাদনা: আপনি যদি ইতিমধ্যে প্রক্রিয়াটি চালু করে থাকেন, প্রক্রিয়াটি বন্ধ হয়ে গেলে সিগন্যালটি প্রেরণ করা থেকে disownবিরত রাখতে আপনি প্রক্রিয়াটি করতে পারেন HUP


ধন্যবাদ, তবে, যেমন আমি গৃহীত উত্তরে মন্তব্য করেছি: ১. প্রশ্নটি ইতিমধ্যে চলমান প্রক্রিয়া সম্পর্কে ছিল। ২. screenএর সমস্যা রয়েছে এবং আমার জীবনের প্রতিটি বাশ সেশনের জন্য এটি ব্যবহার করার মতো মনে হয় না
ভাল্যা

@valya আমি প্রোগ্রাম গ্রুপ থেকে একটি চলমান প্রক্রিয়া সংযোগ বিচ্ছিন্ন করার রেফারেন্স দেখেছি। যদিও আমি এটি করার কোনও সরঞ্জাম জানি না। সরঞ্জামটির সম্ভবত স্ট্যান্ড আইও চ্যানেলগুলিও পুনর্নির্দেশ করা প্রয়োজন। আমি মনে করি আমি এটি একবারে কাজ করতে পেলাম, তবে সিদ্ধান্ত নোহাপটি সহজ ছিল।
বিলথোর

1

টার্মিনাল সেশনটি শেষ হওয়ার পরে আপনি কোনও প্রক্রিয়া (পিআইডি) কোনও HUP সিগন্যাল পাবেন না make নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

nohup -p PID

nohup: invalid option -- 'p'। এর কি সংস্করণ nohupআপনি সিস্টেম কি ধরনের চলমান হয়?
অ্যান্থন

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

হ্যাঁ, -pলিনাক্সে কোনও বিকল্প নেই , সুতরাং এই উত্তরটি সোলারিস এবং এআইএক্স নির্দিষ্ট। যদিও জেনে রাখা ভাল
সের্গেই কলডিয়াজহনি

1

এই স্ক্রিপ্টটি সন্তানের প্রক্রিয়াটিকে পিতামাতার কাছ থেকে বিচ্ছিন্ন করে এবং এটিকে দীক্ষা প্রক্রিয়ায় নিয়োগ দেয়:

toDetach=$1

./$toDetach & # Runs the process - script on background

disown -h %$(jobs -l | grep $(ps -A | grep $toDetach | cut --delimiter=' ' -f1) | cut --delimiter=' ' -f1 | tr -d '[]+') # and then disowns it from parents process
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.