কমান্ড লাইন থেকে জিইউআই লিনাক্স প্রোগ্রামগুলি কীভাবে শুরু করবেন, তবে কমান্ড লাইন থেকে পৃথক করবেন?


88

আমি এর আগেও অনুসন্ধান করেছি, তবে কখনও উত্তর খুঁজে পাচ্ছি না।

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

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

ধন্যবাদ!


1
এর
ডুপ

দয়া করে জিকোসরকে উত্তর দিন।
জোশুয়া রবিসন

উত্তর:


10

ইন bash, detachএকটি অন্তর্নির্মিত, নীচে ব্যবহার করা হয়:

emacs &
detach %+ # or % + the number in brackets printed after the above

ইন zsh, আপনি একটি একক ক্রিয়াকলাপ ব্যাকগ্রাউন্ড এবং বিচ্ছিন্ন করতে পারেন:

emacs &|

108

কমান্ডলাইনে যুক্ত করুন &:

emacs &

এটি ব্যাকগ্রাউন্ডে ইমাস লাগাবে এবং আপনাকে আপনার টার্মিনালটি ব্যবহার চালিয়ে যেতে সক্ষম করবে।

মনে রাখবেন যে এটি আপনার টার্মিনালের উপ-প্রক্রিয়া হিসাবে এখনও ইমাস ছেড়ে যাবে এবং আপনি যখন টার্মিনালটি থেকে প্রস্থান করবেন এটি ইমাসকেও প্রস্থান করবে। এটি এড়াতে, টাইপ করুন:

(emacs &)

প্রথম বন্ধনীগুলি টার্মিনালটিকে টার্মিনাল থেকে ইমাস প্রক্রিয়া বিচ্ছিন্ন করতে বলে।

তবুও, প্রোগ্রামটির stdout এবং stderr বার্তাগুলি টার্মিনালে প্রদর্শিত হবে। এটি রোধ করতে, ব্যবহার করুন:

(emacs &> /dev/null &)

9
আমি বিশেষত (ইম্যাকস এবং) টিপটি পছন্দ করি।

1
যদি আপনি ইতিমধ্যে টাস্কটি শুরু করেছেন (emancs), তবে ঘুমানোর জন্য CTRL-Z ব্যবহার করুন এবং তারপরে পটভূমিতে প্রেরণে "bg" কমান্ডটি ব্যবহার করুন।
জয়ন

@ স্ট্যাকট্রেস: আপনি যদি এটি করেন এবং আপনি আপনার টার্মিনালটি বন্ধ করেন তবে এটি ইম্যাক্সকেও হত্যা করবে।
নাথান ফেলম্যান 21

1
ঠিক আছে .. আমি "nohup" এটি আলাদা করতে ব্যবহার করতাম। প্রক্রিয়া শুরু হয়ে গেলে এটি করা যায় না ...
জয়ন

টার্মিনাল উইন্ডোতে Ctrl+ টিপে যখন Cএই কমান্ডটি জারি করা হয়েছিল, প্রক্রিয়াটি হত্যা করা হয়: <
রিচার্ড ডি উইট

21

ব্যবহার nohup। এটার মত:nohup amarok &

আশাকরি এটা সাহায্য করবে.


19

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


নিম্নলিখিত কাজগুলি:

$ (gui_app &> /dev/null &)

এটি নাথান ফেলম্যানের উত্তর প্লাস পুনঃনির্দেশ।

"&> / dev / নাল" স্টডআউট এবং স্ট্ডার উভয়কে নাল ডিভাইসে পুনঃনির্দেশ করে। শেষ এম্পারস্যান্ড প্রক্রিয়াটিকে পটভূমিতে চালিত করে তোলে। কমান্ডের চারপাশে প্রথম বন্ধনীগুলি আপনার "gui_app" কে একটি সাব-শেইলে চালিত করবে।

এটি করার ফলে আপনি যে কমানসটি থেকে এই আদেশটি কার্যকর করেছেন তা থেকে "gui_app" প্রক্রিয়াটি বিচ্ছিন্ন হয়ে যাবে। এমনকি যদি আপনি উইন্ডোটি বন্ধ করেন তবে প্যারেন্ট টার্মিনাল এমুলেটর চালু রয়েছে, "গুই_এপ" বন্ধ হবে না। আমি এটি দৌড়ে এসে প্রসেস ট্রিটিকে "pstree" কমান্ড দিয়ে দেখলাম এবং এই অ্যাপ্লিকেশনটি শুরু হয়েছে এইভাবে "init" তে শিশু প্রক্রিয়া হয়ে উঠবে।

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

$ gui_app &> /dev/null &

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

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

$ gui_app &
$ disown

(বিটিডব্লিউ এগুলি সব ব্যাশের ক্ষেত্রে প্রযোজ্য I'm আমি নিশ্চিত যে অন্যান্য শাঁসগুলিতে এটি করার জন্য অন্যান্য পদ্ধতি / বাক্য গঠন রয়েছে))

কিছু রেফারেন্স: অস্বীকার প্রক্রিয়া (ইউনিক্স পাওয়ার সরঞ্জাম)

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

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


11

ইউজ-লিনাক্সে সেটসিড নামে একটি সরঞ্জাম রয়েছে যা মূলত যা আলাদা করে তা করে:

$ setsid someprogram

এটি someprogramএকটি নতুন অধিবেশন চলবে ।


9

xemacs &পটভূমিতে XEmacs খোলার জন্য টাইপ করার চেষ্টা করুন ।

দয়া করে এটিকে "অনুকরণকারী উইন্ডোজ আচরণ" হিসাবে উল্লেখ করবেন না। সেকি।

আপনিও করতে পারেন:

  • একটি নতুন টার্মিনাল খুলুন
  • টার্মিনালটি ব্যবহার না করে প্রোগ্রামটি চালু করতে Alt + F2 বা আপনার উইন্ডো ম্যানেজার ব্যবহার করুন
  • জিএনইউ স্ক্রিন ব্যবহার করুন

7

"নিঃশব্দ পটভূমি" জন্য "এসবিজি" নামে একটি এক্সিকিউটেবল স্ক্রিপ্ট ফাইলটিতে আমি নীচের কোডটি রেখেছি। এটি শেল থেকে শুরু হওয়া প্রোগ্রামটি পুরোপুরি সংযোগ বিচ্ছিন্ন করার জন্য সমস্ত প্রয়োজনীয় কাজ করে: স্ট্যান্ডিন, স্টাডআউট এবং স্টাডারকে / থেকে পুনর্নির্দেশ /dev/nullকরে, হ্যাঙ্গআপগুলিকে উপেক্ষা করে, পটভূমিতে রান করে এবং বিচ্ছিন্ন করে ।

#!/bin/bash
nohup "$@" &>/dev/null & disown %%

তাহলে আপনি ঠিক করতে পারেন sbg emacs। আপনি যে কোনো আর্গুমেন্ট আপনি চান প্রেরণ করতে পারেন: sbg emacs --daemon FILE1 FILE2


স্ক্রিপ্টিং সমাধানটি আমার পক্ষে সবচেয়ে ভাল কাজ করেছে। ধন্যবাদ !! যদিও আমি (gui_app &> /dev/null &)পরিবর্তে ব্যবহার করেছি (@ EMPraptor এর উত্তর)
জিমি ওকে


3

আপনি যদি ব্যাশ ব্যবহার করছেন তবে আপনি প্রক্রিয়াটি অস্বীকার করতে পারেন:

% firefox &
% disown 


1

অন্য উত্তরগুলি যেমন বলে, আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

$ emacs &

&যদিও আপনি যদি ভুলে যান তবে কেবল টিপুন এবং Ctrl-zতারপর ব্যবহার করুন bg:

[1]+  Stopped                 emacs
$ bg
[1]+ emacs &
$

এফওয়াইআই: Ctrl-zইম্যাকস প্রক্রিয়াটি থামায় এবং bgপটভূমিতে প্রেরণ করে।


0

শুধু ব্যবহার &হিসাবে $ x &প্রক্রিয়া টার্মিনাল আমি নামক একটি ছোট প্রোগ্রাম কুড়ান সংযুক্ত ছেড়ে detach http://inglorion.net/software/detach/ যা আমি ওরফে হিসাবে dএটা মত একটি বিট হয় nohupকিন্তু একটি লগ ফাইল পিছনে ছাড়বে না আমি এটি এমপিডিএফ বিচ্ছিন্ন করতে ব্যবহার করুন :d mupdf x.pdf


0

এটি আপনার রাখুন ~/.bashrc:

debug_trap_skip()
{
    local cmd_type=$(type -t "$1")

    # Empty cmd_type is for inexistent command or variable definition, exclude them
    # and shell builtins except echo, set and env:
    [[ -z "$cmd_type" || "$cmd_type" = builtin && "$1" != echo && "$1" != set && "$1" != env ]] &&
        return 0

    return 1
}

debug_trap_x11()
{
    if ldd `which $1`|grep -q libX11
    then
        setsid "$@"
        return 0
    fi
    return 1
}

debug_trap()
{
    [[ -n "$COMP_LINE" ]] && return  # do nothing if completing
    [[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ]] && return
    debug_trap_skip $BASH_COMMAND && return 0
    debug_trap_x11 $BASH_COMMAND && return 1

    return 0
}

shopt -s extdebug
trap debug_trap DEBUG

এখন আপনাকে কোন প্রোগ্রাম X11 তা মনে রাখতে হবে না এবং তাদের জন্য বিশেষ হেরফেরগুলি করতে হবে কারণ সেগুলি স্বয়ংক্রিয়ভাবে বিচ্ছিন্ন হয়ে যাবে। নোটটি এটির setsidচেয়ে ভাল nohupকারণ শেষটি এইচপি সিগন্যালটিকে অবরুদ্ধ করে যা আপনার প্রয়োজনটি নয়।

পিএস এখন আপনি winmineলিনাক্সে প্রস্তুত।

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