টার্মিনালের মাধ্যমে কীভাবে জিআইআইআই অ্যাপ্লিকেশনটি পরিষ্কারভাবে চালু করা যায়?


78

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

রহস্যজনক অ্যাম্পারস্যান্ড &প্রত্যয়টি টার্মিনালটিকে প্রেক্ষাপটটিকে পটভূমিতে ফেলেছে বলে মনে হয় (তবে সেখানে কী ঘটে তা আমি নিশ্চিত নই)।

টার্মিনালের মাধ্যমে কোনও অ্যাপ্লিকেশন চালু করার কি কোনও উপায় আছে যাতে " Alt+ এর মাধ্যমে" কিছু চালু করার মতো কোনও "হ্যাঙ্গ অন" প্রভাব না থাকে F2?

আমি টার্মিনালে ব্যাকগ্রাউন্ডে এবং মুদ্রণ কিছু না রেখে তত্ক্ষণাত কমান্ড লাইনটি পুনরায় উপলব্ধ করতে চাই।


হর্টকের অনুরোধে আমি তার উত্তরটি মুছে দিয়েছি যা আপনি গ্রহণ করেছেন। দয়া করে আপনি অন্য উত্তরটি বেছে নিতে পারেন (আপনি হটারকের প্রথমটি নির্বাচন করতে হবে - পৃষ্ঠার নীচে লাল রঙের মধ্যে লুকিয়ে থাকা উচিত)
অলি

1
ইতিমধ্যে একটি প্রোগ্রাম-চলমান (কন-এফ-ব্যবহার দ্বারা বর্ণিত) এর সাথে মোকাবিলা করার পদ্ধতিটি সেই পরিস্থিতির জন্য ভাল তবে আমার প্রাথমিক প্রশ্নটি কোনও টার্মিনাল বিশৃঙ্খলা ছাড়াই পরিষ্কার-উদ্বোধনের বিষয়ে ছিল , তাই আমি স্বীকার করেছি screen(অলি উল্লেখ করেছেন) এবং রবিনজে)। আমি এর ক্ষমতা দ্বারা মুগ্ধ; এটি পড়ার পরে এবং চেষ্টা করে দেখার পরে ... এটির জন্য কেবল টাইপ করা প্রয়োজন: screen -d -m gedit(বা screen geditতারপরে Ctrl+a dবিচ্ছিন্ন করা) ... এবং আমার এখনও জিডিটের টার্মিনাল দৃশ্যে (সতর্কতা বার্তাগুলি ইত্যাদির জন্য) সম্পূর্ণরূপে প্রবেশ করতে screen -rপেরেছি এমনকি যদি আমি এমনকি এর মধ্যে আসল টার্মিনাল উইন্ডোটি বন্ধ করে দিয়েছে ...
পিটার.ও

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

উত্তর:


17

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

অন্যান্য জিনিসের জন্য, অন্যান্য লোকেরা যা বলেছে তা কার্যকর হবে। আমি একজন ভক্ত nohup... তবে আপনার যদি টার্মিনালের প্রয়োজন হয় তবে আপনি বিচ্ছিন্ন করতে পারেন তবে তার সাথে আবার সংযুক্তি করতে পারেন, আপনি দেখতে চান screen

  1. এটি একটি টার্মিনালে চালান এবং তারপরে এমন কিছু চালান যা আউটপুটকে পুশ করে। আমি জ্যাঙ্গো উন্নয়ন সার্ভার ব্যবহার কিন্তু irssiবা এমনকি watch uptimeভাল উদাহরণ হতে পারে।
  2. টার্মিনালটি মেরে একটি নতুন শুরু করুন।
  3. চালান screen -rএবং বুম, আপনি ফিরে এসেছেন।

screenএটির চেয়ে অনেক বড় এবং আপনি byobuআরও ভাল টার্মিনাল অভিজ্ঞতার জন্য এটি একত্রিত করতে পারেন । চারপাশে পড়ুন।


স্ক্রিনটি কী করতে পারে / করতে পারে তা নিয়েই আমার এই প্রথম আসল অন্তর্দৃষ্টি ... টার্মিনাল
টিপটির

স্ক্রিনটি আর উপলভ্য নয়, তবে tmux পর্দা প্রতিস্থাপন করতে পারে। (tmux একটি নতুন tmux অধিবেশন শুরু করতে, ctrl + b, তারপরে ডিটাচ করতে d টিপুন, এবং tmux পুনরায় সংযুক্তি সংযুক্ত করুন)
Gman স্মিথ

84

ধরুন geditআপনি যে প্রোগ্রামটি চালাতে চান সেটি (উদা। "অস্বীকৃত", "বিচ্ছিন্ন", "ডিকোপলড")। আপনি ঠিক কী করতে চান তার উপর নির্ভর করে বিভিন্ন উপায় রয়েছে:

প্রোগ্রাম ইতিমধ্যে চলছে

অস্বীকার:

disown -hআপনি যদি ইতিমধ্যে চলমান প্রোগ্রামের মাধ্যমে nohupএটি করতে চান তবে যাওয়ার উপায় (যেমন আপনি যদি এটি ভুলে গেছেন )। আপনাকে প্রথমে এটি Ctrl+ ব্যবহার করে থামাতে হবে Z। তারপরে আপনি পটভূমিতে bg [jobId](উদাঃ bg 1) ব্যবহার করে রাখতে পারেন । আপনি তাদের চাকরির সাহায্যে চলমান চাকরির একটি তালিকা পান jobs। এর পরে আপনি এটি ব্যবহার করে টার্মিনাল থেকে ডিকুয়াল করতে পারেন disown -h %[jobId]। টার্মিনাল সেশন উদাহরণ:

$ gedit 
^Z
[1]+  Stopped                 gedit
$ jobs
[1]+  Stopped                 gedit
$ bg 1
[1]+ gedit &
$ disown -h %1
$ exit

প্রোগ্রাম এখনও শুরু হয়নি

nohup

nohupসবসময় সমস্ত মেশিনে উপস্থিত থাকে না। আপনি যদি জানেন তবে আপনি ডিকোপল করতে চান আগেই আপনি ব্যবহার করবেন:

nohup gedit &

হতে পারে আপনি শেল আউটপুট ভাল এবং আপনার প্রোগ্রামটি ছদ্ম ইনপুট উৎস পুনর্নির্দেশ করতে, তাই চান: nohup ./myprogram > foo.out 2> bar.err < /dev/null &। আপনি আউটপুটটিকে পুনরায় ডাইরেক্ট করতে চান তা হয় এতে বিরক্ত হয় না বা পরে এটি ব্যবহার করতে পারে। নাল-ইনপুট এসএসএস-এ হিকআপগুলি রোধ করতে সহায়তা করতে পারে।

Subshell:

আপনি একটি অনুরূপ প্রভাব অর্জন করতে পারেন

$ (geany >/dev/null 2>&1 &)

জ্যাকেট ইন চালানোর জন্য বন্ধনীগুলি একটি নতুন সাবশেল খুলবে >/dev/null 2>&1the এবং &শেষে প্রক্রিয়াটি পটভূমিতে রাখে।

টার্মিনাল মাল্টিপ্লেক্সিং

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

দরকারী:

  • F2 একটি নতুন উইন্ডো তৈরি করুন
  • F3 পরবর্তী উইন্ডোতে সরান
  • F4 পূর্ববর্তী উইন্ডোতে সরান
  • F6 সেশন এবং লগআউট থেকে বিচ্ছিন্ন করুন
  • Shift-F6 অধিবেশন থেকে বিচ্ছেদ, কিন্তু লগআউট করবেন না
  • F7 স্ক্রোলব্যাক / অনুসন্ধান মোড প্রবেশ করান
  • Ctrl-F5 যে কোনও এসএসএইচ / জিপিজি সকেট বা এজেন্টগুলির সংযোগ করুন

কম দরকারী:

  • Shift-F2 অনুভূমিকভাবে স্ক্রিনটি বিভক্ত করুন
  • Ctrl-F2 স্ক্রিনটি উল্লম্বভাবে বিভক্ত করুন
  • Shift-F3 পরবর্তী বিভাজনে ফোকাস সরান
  • Shift-F4 পূর্ববর্তী বিভাজনের দিকে ফোকাস সরান
  • Shift-F5 সমস্ত বিভাজনগুলি সঙ্কুচিত করুন
  • F5 সমস্ত স্থিতি বিজ্ঞপ্তি রিফ্রেশ
  • F8 বর্তমান উইন্ডোটির নতুন নাম দিন
  • F9 বাইবো কনফিগারেশন মেনু চালু করুন
  • F12 জিএনইউ স্ক্রিনের এস্কেপ কী
  • Alt-Pageup এই উইন্ডোটির ইতিহাসটি দিয়ে আবার স্ক্রোল করুন
  • Alt-Pagedown এই উইন্ডোর ইতিহাসের মাধ্যমে এগিয়ে স্ক্রোল করুন
  • Ctrl-a-! বাইবুর সমস্ত কী-বাইন্ডিং চালু বা বন্ধ টগল করুন

'এট' ডেমন এবং অন্যরা

atএকটি নির্ধারিত সময়ে একটি কমান্ড চালানোর জন্য একটি দুর্দান্ত দরকারী ছোট সরঞ্জাম। শেল থেকে কমান্ড আলাদা করতে এটি 'অপব্যবহার' হতে পারে:

echo './myprogram myoption1 myoption2' | at now

এছাড়াও আপনি সন্ধান করতে পারেন setsidএবং start-stop-daemon, তবে অন্যান্য পদ্ধতিগুলি যথেষ্ট।


টিপ: যদি কেবল একটি কাজ থাকে তবে কাজের আইডি alচ্ছিক, উদাহরণস্বরূপ bg %1আপনি কেবল টাইপ করতে পারেন bg
মাস্টারমাস্টিক

25

রহস্যজনক অ্যাম্পারস্যান্ড "&" প্রত্যয়টি টার্মিনালটিকে প্রক্রিয়াটিকে পটভূমিতে ফেলেছে বলে মনে হচ্ছে ... (তবে আমি নিশ্চিত না যে সেখানে কী ঘটে)।

এটি করে এবং আপনি যা চান তা প্রায়শই হয়। যদি আপনি & ব্যবহার করতে ভুলে যান তবে আপনি প্রোগ্রামটি সিটিআরএল-জেডের সাথে স্থগিত করতে পারেন তারপর এটি বিজি কমান্ডের সাথে পটভূমিতে রাখুন - এবং সেই শেলটি ব্যবহার চালিয়ে যেতে পারেন।

প্রক্রিয়াটির স্টিডিন, স্টাডআউট এবং স্ট্ডার এখনও টার্মিনালের সাথে সংযুক্ত; আপনি এগুলি / থেকে / dev / নাল বা অন্য কোনও ফাইল থেকে পুনঃনির্দেশ করতে পারেন (যেমন কোনও জায়গায় আউটপুট লগ সংরক্ষণ করুন), পছন্দসই:

some-program </dev/null &>/dev/null &
# &>file is bash for 1>file 2>&1

আপনি কাজগুলিতে প্রক্রিয়াটি দেখতে পারেন, এটিকে অগ্রভাগে ফিরিয়ে আনতে পারেন (fg কমান্ড), এবং এটি সংকেত পাঠাতে (কমান্ড কমান্ড)।

কিছু গ্রাফিকাল প্রোগ্রাম টার্মিনাল থেকে বিচ্ছিন্ন হবে; যদি এটি হয় তবে আপনি যখন "সাধারণভাবে" কমান্ডটি চালাবেন আপনি লক্ষ্য করবেন এটি গ্রাফিকাল প্রোগ্রাম শুরু করে এবং "প্রস্থান" করবে।


এখানে একটি সংক্ষিপ্ত স্ক্রিপ্ট , আপনি এটি ~ / বিনে রাখতে পারেন , যা আমি রানবজির নাম দিয়েছি:

#!/bin/bash
[ $# -eq 0 ] && {  # $# is number of args
  echo "$(basename $0): missing command" >&2
  exit 1
}
prog="$(which "$1")"  # see below
[ -z "$prog" ] && {
  echo "$(basename $0): unknown command: $1" >&2
  exit 1
}
shift  # remove $1, now $prog, from args
tty -s && exec </dev/null      # if stdin is a terminal, redirect from null
tty -s <&1 && exec >/dev/null  # if stdout is a terminal, redirect to null
tty -s <&2 && exec 2>&1        # stderr to stdout (which might not be null)
"$prog" "$@" &  # $@ is all args

আমি প্রোগ্রামটি ($ অগ্রগতি) পুনর্নির্দেশের আগে সন্ধান করি যাতে এটি সনাক্ত করার ক্ষেত্রে ত্রুটিগুলি প্রতিবেদন করা যায়। এটি "কমান্ড আর্জিগুলিকে রানবিজি হিসাবে চালান ..."; আপনি যদি কোথাও আউটপুট সংরক্ষণ করতে চান তবে আপনি একটি স্টাইডআউট / এআরআর একটি ফাইলে পুনর্নির্দেশ করতে পারেন।

পুনঃনির্দেশগুলি এবং ত্রুটি পরিচালনার ব্যতীত এটি হর্টকের উত্তরের সমতুল্য ।


ঠিক আছে, ধন্যবাদ ... মনে হচ্ছে ctrl-z(স্থগিত করা) আমাকে আবার কমান্ড লাইনে অ্যাক্সেস দেয়, তবে জিইউআইকে ফাঁকা রাখি যতক্ষণ না আমি বিষয়টি ই bg-সাসপেন্ড করে বলে মনে করি। (বুঝায়) ... এমন কি আরও একটি আদেশ আছে যার মাধ্যমে আমি জিইউআইকে বিচ্ছিন্ন করতে পারি ... আহা! আমি এখন দেখছি আপনি কী বোঝাতে চেয়েছেন sighals (kill command)... (আকর্ষণীয় বিষয়গুলি এই সংকেতগুলি) .. আমি ddক্রমবর্ধমানভাবে এটির পরিসংখ্যান আউটপুট তৈরি করতে একটি কোড স্নিপেট ব্যবহার করেছি .. এবং এটি kill+ একটি সিগন্যাল ব্যবহার করেছে ... "চাকরিকে আলাদা করার জন্য কোনও নির্দিষ্ট সিগন্যাল আছে কি? "?
পিটার.ও

রিকের উত্তরের জন্য আমি আপনার মন্তব্যটি কেবলমাত্র লক্ষ্য করেছি ... আমি disown চাকরি-জিপিডিট চেষ্টা করেছি এবং মনে হয় এটি কাজটি সরিয়ে দেবে .... (তবে আমি নিজে টার্মিনালে জ্যাসিটটি বন্ধ করার সময় সিস্টেম বার্তা পেয়েছি ... তবে আমি মনে করি আমি এই মুহুর্তে একটি স্ক্রুড আপ টার্মিনাল পেয়েছি ... খুব বেশি পরীক্ষা নিরীক্ষা করছি :(
পিটার.ও

@ ফ্রেড: চাকরীগুলি শেল দ্বারা পরিচালিত হয়, সুতরাং কোনও সংকেত এটি নিয়ন্ত্রণ করতে পারে না। বেশ কয়েকটি শেল শুরু করা আপনার পক্ষে সবচেয়ে ভাল কাজ হতে পারে - বেশ কয়েকটি জিইউআই টার্মিনাল ট্যাবগুলিকে অনুমতি দেয় এবং আপনি স্ক্রিন বা টিএমউक्स ব্যবহার করতে পারেন।

2
@ ফ্রেড: আপনার jobs -p commandযদি একবারে ব্যাকগ্রাউন্ডে একটি কমান্ডের একাধিক উদাহরণ চলমান থাকে তবে ভালভাবে চলবে না । আপনি jobsসঠিক কাজের আইডি খুঁজে পেতে এবং তারপরে jobs -p <job-id>কাজের পিআইডি পেতে ব্যবহার করতে পারেন । ব্যক্তিগতভাবে আমি সাবশেলের সাথে সংস্করণটি অনেক সহজ find ;-)
htorque

2
@ হটার্ক, ফ্রেড: বাশ শেষ কাজটি অস্বীকার করার জন্য আপনি পরামিতি ছাড়াই চালনা চালাতে পারেন:gedit & disown

22

কোনও অ্যাপ্লিকেশন শুরু করতে এবং চালু হওয়া টার্মিনাল থেকে এটি আলাদা করতে & !.

firefox &!

6
জেনে রাখা ভাল তবে এটি কেবল zsh- বলে মনে হচ্ছে। ব্যাশে আপনাকে disown <pid-of-command>পটভূমিতে কমান্ডটি শুরু করার পরে ম্যানুয়ালি চালাতে হবে ।
htorque

আকর্ষণীয় ... আমি zsh এর দিকে তাকাতে যাচ্ছি, তবে লিনাক্স নবাগত হিসাবে, আমি আপাতত বাশ দিয়ে থাকব ... ধন্যবাদ
পিটার.ও

বিস্ময়বোধক চিহ্নটি কী করে?
বাদামি ন্যাটি

1
দ্য ! টার্মিনাল প্রক্রিয়া থেকে অ্যাপ্লিকেশন প্রক্রিয়াটি ভেঙে দেবে যাতে আপনি বন্ধ হওয়া থেকে শুরু হওয়া অ্যাপ্লিকেশনটি ছাড়াই টার্মিনালটি বন্ধ করতে পারেন। এটি একটি zsh জিনিস বলে মনে হয়, কিন্তু সহজ।
রিক

তবে এটি @htorque খুব বাশে কাজ করেছে .... সুতরাং আমি অনুমান করি এটি কোনও সমস্যা নয়।
জেসার

20

ব্যবহার nohup

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

উদাহরণ স্বরূপ:

nohup gedit something

2
কী nohup? সম্প্রসারিত করুন.
অক্সভিভি

3
নোহপ এমন একটি প্রোগ্রাম যা হ্যাংআপ সংকেতগুলিকে উপেক্ষা করে একটি প্রদত্ত কমান্ড চালায়, যাতে কমান্ডটি পিতামাতার প্রক্রিয়াটি শেষ হওয়ার পরে পটভূমিতে চলতে পারে। দেখুন র manpage
ফ্লোরিয়ান Diesch

আসলে আমি আমার উত্তর এখানে ভুল বলে মনে করি। আরও চিন্তায়, nohupএই দৃশ্যে ব্যবহার করা উচিত।
বোহহজ

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

2
একটি বিষয় সাবধান হওয়া উচিত হ'ল nohupবর্তমান ডিরেক্টরিতে একটি ফাইল তৈরি করে nohup.out। দেখুন man পৃষ্ঠা আরো বিস্তারিত জানার জন্য। আমি disownএই কারণে এবং disownআপনার প্রবর্তনের পরে কাজ করে এমন বিষয়টির জন্য পছন্দ করি gedit
ফ্লিম

4

টার্মিনালটি খুলুন, স্ক্রিনটি টাইপ করুন , আপনি যে কমান্ডটি চালাতে চান তা টাইপ করুন , টার্মিনালটি বন্ধ করুন। প্রোগ্রামটি জিএনইউ স্ক্রিন সেশনে চলতে থাকবে।


জিএনইউ স্ক্রিনটি আসলে কী?
অক্সভিভি

আমি যদি ধারণাটি সঠিকভাবে পাই তবে এটি কমান্ড লাইনের জন্য একধরণের উইন্ডো ম্যানেজার। এটি আপনাকে কমান্ড লাইন ইন্টারফেস সেশনে একবারে একাধিক প্রোগ্রাম চালানোর অনুমতি দেয়।
রবিনজে


এরকম কিছু, কেবল বাইবু ব্যবহার করা সহজ is আমি যদি ভুলভাবে ভুল হয়ে যাই তবে ব্যোবু জিএনইউ স্ক্রিনের জন্য একটি সহজ ইন্টারফেস।
রবিনজে


1

XDG খুলুন

এই সাধারণ-উদ্দেশ্যমূলক ইউটিলিটিটি একবার দেখুন: https://linux.die.net/man/1/xdg-open

এটি আপনার ফাইল ম্যানেজারে একটি আপেক্ষিক অবস্থান খুলবে।

 $ xdg-open .

এটি একটি পিডিএফ রিডারে একটি পিডিএফ ফাইল খুলবে।

 $ xdg-open foo.pdf

এমনকি আপনি ওয়েব ইউআরএল সরবরাহ করতে পারেন

$ xdg-open www.google.com

0

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

nohup gedit & exit

এবং এটাই. জিডিট খোলে এবং টার্মিনালটি বন্ধ করে যখন জিডিট শুরু হয়। জিডিট এখন টার্মিনালের সাথে সম্পর্কিত না হওয়ায় এটি সক্রিয় থাকে।


0

এটি কোনও স্ক্রিপ্টের অভ্যন্তরেও কাজ করে (এলিয়াসগুলির মতো, '&' ট্রেলারটি সাধারণত স্ক্রিপ্টগুলিতে অনুমতি দেওয়া হয় না কারণ সেগুলি ইন্টারেক্টিভ নয়):

bash -i >/dev/null 2>&1 <<<'nohup gedit &'

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