টার্মিনাল থেকে পটভূমিতে প্রোগ্রাম চলমান


136

প্রোগ্রামটি চলমান অবস্থায় শেলটি বন্ধ করার ক্ষমতা সহ আমি কীভাবে একটি শেলটির পটভূমিতে একটি প্রোগ্রাম চালাব? আমাদের ইউআই-তে সমস্যা হচ্ছে বা কোনও কারণে, আমাকে টার্মিনাল উইন্ডো থেকে একটি প্রোগ্রাম বুট করতে হবে, বলুন nm-applet:

nm-applet

এটি শুরু হয়ে গেলে এটি টার্মিনাল উইন্ডোর অগ্রভাগটি দখল করে।

টার্মিনালটি খোলা ছাড়ার প্রয়োজন ছাড়াই ব্যাকগ্রাউন্ডে প্রোগ্রামটি চালানোর কোনও সহজ উপায় আছে বা এটি পুরো টার্মিনালটি দখল করেছে?

এই নোটটিতে, আমি টার্মিনাল থেকে প্রোগ্রামগুলি চালনার একটি উপায় খুঁজে পেয়েছি এবং কমান্ডটিতে একটি অ্যাম্পারস্যান্ড ( &) যুক্ত করে এটি অন্যান্য ইনপুটগুলিকে অনুমতি দিয়েছি :

nm-applet &

টার্মিনালটি বন্ধ হয়ে যাওয়ার পরে টার্মিনালটিতে যে কোনও প্রক্রিয়া শুরু হয়েছিল তা নিহত হওয়ার কারণে এটি খুব বেশি ব্যবহার হয় না।                                                                        


7
nohup 'কমান্ড' & এটি কার্যকর বলে মনে হচ্ছে। এ নিয়ে কোন সমস্যা?
ওভারটোন

উত্তর:


173

আমি সম্প্রতি পছন্দ করতে এসেছি setsid। আপনি টার্মিনাল থেকে সবেমাত্র কিছু চালাচ্ছেন এমনটি দেখে এটি শুরু হয় তবে আপনি সংযোগ বিচ্ছিন্ন করতে পারেন (টার্মিনালটি বন্ধ করুন) এবং এটি কেবল চলতে থাকবে।

এর কারণ হ'ল কমান্ডটি প্রকৃতপক্ষে বেরিয়ে আসে এবং ইনপুটটি বর্তমান টার্মিনালে আসে, এটি সম্পূর্ণ ভিন্ন পিতামাতার মালিকানাধীন (এটি আপনি টার্মিনালটি বন্ধ করার পরেও জীবিত থাকে)।

একটি উদাহরণ:

setsid gnome-calculator

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

gnome-calculator & disown

আমি সবেমাত্র প্রথম বন্ধনীতে সাব-শেল স্পোন করার বিষয়ে শিখেছি। এই সহজ পদ্ধতিটি কাজ করে:

(gnome-calculator &)

এবং অবশ্যই nohupআপনি উল্লেখ হিসাবে আছে । আমি বন্যা নই nohupকারণ এতে ~/nohup.outআমাকে জিজ্ঞাসা না করেই লেখার প্রবণতা রয়েছে । যদি আপনি এর উপর নির্ভর করেন তবে এটি আপনার পক্ষে হতে পারে।

nohup gnome-calculator

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

ইন্টারনেট screenটিউটোরিয়ালে পূর্ণ তবে এখানে একটি সহজ দ্রুত শুরু:


অলি, DISPLAY এর ক্ষেত্রে =: 0 unityক্য - উপরের কোনটি ব্যবহার করবেন এবং কেন?
বাদামি ন্যাটি

4
@nuttyaboutnatty নিজস্ব শেল সেশনে সম্পূর্ণ অনেক মোড়ানো: sh -c "sleep 10s && cvlc '/home/omm.ogg'" & disown। এটি ঠিকঠাকভাবে বেরিয়ে আসে তা নিশ্চিত করার জন্য আমার সমাধান এটি বেশ কার্যকর।
অলি

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

1
নিখুঁত, যে আমার পক্ষে কাজ করেছে সে হ'ল সাবশেল '(জিনোম-ক্যালকুলেটর এবং)'। আমি এটি পটভূমিতে একটি মনো কনসোল অ্যাপ্লিকেশন চালু করতে ব্যবহার করি। অন্যান্য কৌশলগুলির সাথে, মনো অ্যাপ্লিকেশনটি তাত্ক্ষণিকভাবে ক্রাশ হবে।
নিকোলোস জর্জিউ

2
ভবিষ্যতে ব্যবহারকারীদের উল্লেখ্য : সৃষ্টির nohup.outউভয় stdout- এ এবং sterr পুনঃনির্দেশিত সঙ্গে দমন করতে /dev/nullযেমন:nohup firefox &> /dev/null &
Sergiy Kolodyazhnyy

55

আমি যে দুটি উপায় দিয়ে যাচ্ছি তা এখানে। প্রথমত, এটি টার্মিনাল থেকে চলমান নয়; রান ডায়লগটি খোলার জন্য Alt+ চাপুন F2এবং সেখান থেকে চালিয়ে যান (& ছাড়াই)।

একটি টার্মিনাল থেকে, চালান

nm-applet &

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

পরিবর্তে, চলমান দ্বারা শেল থেকে প্রস্থান exitবা আঘাত Ctrl+ + D। এরপরে বাশ তার বাচ্চাদের অস্বীকার করবে, এবং প্রস্থান করবে, পটভূমি প্রক্রিয়াগুলি এখনও চলছে। এবং যখন বাশ প্রস্থান করে, টার্মিনালটি তার শিশু প্রক্রিয়াটি হারিয়ে ফেলেছে, তাই এটিও বন্ধ হয়ে যাবে।

একবারে এটি করা:

nm-applet & exit

এটা আশ্চর্যজনক! এটি কখনই জানত না এবং আপনি এটির একমাত্র ব্যক্তি বলে মনে করছেন। কোনও ডেস্কটপ এনভায়রনমেন্টে যাওয়ার সময় অবশ্যই এটি আমার প্রিয় উপায়। খুব খারাপ আমি আরও
উত্সাহ

আমি এটি একটি ভিন্ন অ্যাপ্লিকেশন দিয়ে চেষ্টা করেছি এবং এটি ব্যর্থ হয়েছে: matlab & exitদুটি পৃথক কমান্ড হিসাবে চলমান ভালভাবে কাজ করেছে:matlab & exit
ম্যাটকেলি

আমি ভাবছিলাম যে ওপি কেন টার্মিনালটি বন্ধ করে দেওয়ার কারণে তার পটভূমির প্রোগ্রামগুলি ক্র্যাশ হয়েছিল। আমি উইন্ডোতে "x" বোতামটি দিয়ে কোনও টার্মিনাল বন্ধ করার চেষ্টা করিনি।
ব্যবহারকারী 1717828

এক্স বোতামটি মেরে ফেলা হচ্ছে এটি পরিষ্কারভাবে প্রস্থান করে না, প্রস্থান কমান্ডটি করে। পরিবর্তে আপনি এক্স বাটনটি একটি প্রস্থান কমান্ডে পুনরায় তৈরি করতে পারেন ...
টিম বেকার

14

আপনি চিহ্নিত হিসাবে, আপনি চালাতে পারেন

nohup nm-applet &  

টার্মিনালটি বন্ধ করার সময় শেষ সিগন্যাল উপেক্ষা করা। তাতে কোনও সমস্যা নেই।


অন্য কোন বিকল্প? কেবল জ্ঞানের জন্য, অন্য কোনও কিছুর জন্য নয়
ওভারটোন

উইকিপিডিয়ায় ( এন.ইউইকিপিডিয়া.র.উইকি / নোহুপ ) এখানে ব্যবহারের জন্য একটি পরামর্শ রয়েছে echo command | at nowযা আমি এটি কাজ করতে পারি না।
দেশগুয়া

2
আমি ভাবছি আপনি যখন কোনও আইকন বা প্রোগ্রামটিতে ডাবল ক্লিক করেন তখন এটি কোনও ইউআই থেকে কীভাবে কাজ করে।
ওভারটোন

execnohup <command> &পটভূমিতে একটি প্রক্রিয়া চালানোর জন্য এবং বর্তমান শেল প্রম্পটে ফিরে আসার বিকল্প সরবরাহ করে ।
জেএসটিউবাল

12

অন্যান্য অনেক উত্তর অনুপস্থিত একটি জিনিস হ'ল বর্তমানে চলমান প্রক্রিয়াটি কীভাবে পৃথক শেলটি ব্লক করে রাখে। সবচেয়ে টার্মিনাল এবং শাঁস সালে Ctrl+ + Zচলমান প্রক্রিয়া বন্ধ এবং আপনি একটি ইনপুট প্রম্পটে ফিরিয়ে আনবে। তারপরে, আপনি ইস্যু করতে পারেন

bg

পটভূমিতে চলমান প্রক্রিয়া প্রেরণ। সমস্যা

fg

পরিবর্তে চলমান প্রক্রিয়াটিকে অগ্রভাগে ফিরিয়ে দেওয়া।

সম্পাদনা : এই উত্তরের আরও বিশদ আমি পরে আবিষ্কার করেছি।


7

(exec PROGRAM &> /dev/null & )সাবशेলের পিআইডি অনুমতি গ্রহণের জন্য ব্যবহার করুন PROGRAM। আমি বিভিন্ন পদ্ধতির সাথে এই পদ্ধতির একাধিকবার পরীক্ষা করেছি। আসল টার্মিনালটি বন্ধ করে নতুনভাবে তৈরি হওয়া প্রোগ্রামটিতে কোনও প্রভাব নেই

ছোট ডেমো:

$ # this is before running
$ (exec firefox &> /dev/null &)
$ # and look, we still in side the terminal and can continue working

হুম (exec firefox)টার্মিনাল হ্যাং পর্যন্ত আমি ফায়ারফক্স থেকে প্রস্থান ... এবং টার্মিনাল SIGHUPs শেল এবং subshell বন্ধের
কস

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

আমার জন্য ভাল কাজ করে
Zanna

আমি বিশ্বাস করি না যে বাশের এক্সিকিউট ব্যবহার করা প্রয়োজনীয়, এটি এমন কোনও কারণ হতে পারে যে আপনার কোনও কারণে পিআইডি দরকার need
মেরিনারা

2

আমি বাইবো টার্মিনালটি সুপারিশ করতে পারি। আপনি সহজেই F6 কী টিপে আপনার প্রক্রিয়াটি আলাদা করতে পারেন can


1

যদিও উপরে ভাল উত্তর রয়েছে, আমি ব্যাকগ্রাউন্ডে আমি কীভাবে ম্যাটল্যাব ব্যবহার করব সে সম্পর্কে আমার 2 সেন্ট দিতে চাই।

sudo -b matlab

-bউবুন্টু এর ট্যাগ পটভূমিতে অ্যাপ্লিকেশন রান করতে পারেন। আপনি এই কমান্ডটি কার্যকর করার পরে টার্মিনালটি বন্ধ করতে পারেন।

সম্ভবত, সম্পর্কিত নয় তবে দুর্দান্ত ওয়েবসাইট রয়েছে যা আপনি শেল কমান্ডগুলি ব্যাখ্যা করতে ব্যবহার করতে পারেন। http://explainshell.com/explain/8/sudo


0

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


2
উবুন্টুকে জিজ্ঞাসা করুন স্বাগতম! কীভাবে এটি করবেন সে সম্পর্কে সুনির্দিষ্ট বিশদ সহ এটি উত্তর প্রসারিত করার জন্য আমি এই উত্তরটি সম্পাদনা করার পরামর্শ দিচ্ছি । (আরও দেখুন কীভাবে আমি একটি উত্তম উত্তর লিখব? জিজ্ঞাসা উবুন্টুকে কী ধরণের উত্তর সবচেয়ে মূল্যবান বলে মনে করা হয় সে সম্পর্কে সাধারণ পরামর্শের জন্য))
ডেভিড ফোরস্টার

0

যদি কে-ডি-ই ব্যবহৃত হয়, আপনি ব্যবহার করতে পারেন kstart, যা আপনার প্রোগ্রামটি টার্মিনাল থেকে বিচ্ছিন্ন করে শুরু করবে। এটি নিশ্চিত করে যে কে-এন-এন-পরিবেশ পরিবেশ সঠিকভাবে কমান্ডের জন্য সেটআপ করেছে। ( kstart.cppরেফারেন্সের জন্য উত্স কোডটি দেখুন there আপনি সেখান থেকে দেখতে পেলেন যে এটি ব্যবহার করে KProcess::startDetachedএবং KProcessথেকে উদ্ভূত হয় QProcessএবং startDetachedএকটি নতুন প্রক্রিয়া শুরু করে এবং এটি থেকে বিচ্ছিন্ন হয়ে যায়))

একই kde-openবা হয় xdg-openবা gnome-open


এটি যেমন দাঁড়িয়ে আছে তেমন উত্তরটির চেয়ে কমেন্টের মতো দেখতে আরও বেশি লাগে। প্রসারিত করতে সম্পাদনা করুন । শুধু একটি ওয়ানলাইনার দিবেন না; আদর্শ হিসাবে উদ্ধৃত সহ কেন আপনি ঠিক বলেছেন তা ব্যাখ্যা করুন। ব্যাখ্যা ব্যতীত উত্তরগুলি সরানোর সাপেক্ষে।
বেনামে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.