سؤال كيفية بدء تشغيل برامج لينكس واجهة المستخدم الرسومية من سطر الأوامر ، ولكن منفصلة عن سطر الأوامر؟


لقد بحثت عن هذا من قبل ، ولكن لم أتمكن مطلقًا من العثور على إجابة.

في Windows ، إذا كان لدي نافذة شاشة مفتوحة ، اكتب winmine، واضغط على enter ، سوف تظهر كانسة الألغام ، منفصلة تماما عن برنامج cmd. مثيل Minesweeper غير مرتبط بموجه الأوامر بأية طريقة أعرفها ، باستثناء أنه تم ضبط أصل Minesweeper على مثيل موجه الأوامر هذا. لكن الأمر مختلف في لينكس.

في Linux ، إذا كان لدي نافذة وحدة تحكم مفتوحة ، اكتب emacs ثم اضغط Enter ، سيتم فتح Emacs ، ولكن يبدو أنه مرتبط بسطر الأوامر. على وجه التحديد ، يبدو أنه لا يمكنني استخدام سطر الأوامر بعد ذلك حتى يتم إغلاق مثيل Emacs. هل هناك طريقة لتكرار سلوك ويندوز في لينكس؟

شكر!


86
2017-08-18 03:22


الأصل


dup من:superuser.com/questions/178587/... - behrooz
يرجى إعطاء الجواب على geekosaur. - Joshua Robison
في windows7 انها minesweeper.exe هنا C: \ Program Files \ Microsoft Games \ Minesweeper لذلك minesweeper.exe لن تعمل بشكل عام .. لأن هذا الدليل ليس في المسار .. وعلى أية حال ، يجب أن تنص على نسخة ويندوز - barlop


الأجوبة:


في bash، detach هو المدمج في ، على النحو التالي:

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

في zsh، يمكنك الخلفية وفصل في عملية واحدة:

emacs &|

9
2018-03-04 00:33





ألحق & إلى سطر الأوامر:

emacs &

سيؤدي ذلك إلى وضع emacs في الخلفية وتمكينك من الاستمرار في استخدام الجهاز الخاص بك.

لاحظ أن هذا سيبقى emacs كعملية فرعية من الطرفية الخاصة بك ، وعندما تخرج من المحطة ، فإنه يخرج أيضًا من emacs. لتجنب ذلك ، اكتب:

(emacs &)

ويخبر الأقواس الطرفية بأن تفصل عملية emacs عن المحطة الطرفية.

ومع ذلك ، ستظهر رسائل stdout و stderr من البرنامج على الجهاز. لمنع هذا ، استخدم:

(emacs &> /dev/null &)

105
2017-08-18 03:25



هذا بالضبط ما أردت شكر!
أنا لا سيما مثل غيض (إيماك &).
إذا كنت قد بدأت بالفعل المهمة (emancs) ، فاستخدم CTRL-Z لوضعها في وضع السكون ثم استخدم الأمر "bg" لإرسالها إلى الخلفية. - Jayan
StackTrace: إذا قمت بذلك ، وقمت بإغلاق الجهاز الخاص بك ، فإنه سيقتل أيضا emacs. - Nathan Fellman
موافق .. اعتدت على استخدام "nohup" فصل هذا. لا يمكن القيام بذلك بمجرد بدء العملية ... - Jayan


استعمال nohup. مثله: nohup amarok &

أتمنى أن يساعدك هذا.


19
2017-08-18 03:26





أنا نشرت إجابة إلى موضوع قديم من موضوع مشابه مع إجابات من مصادر متنوعة. فيما يلي نسخة من هذه الإجابة التي تم تكييفها لهذا الموضوع.


الأعمال التالية:

$ (gui_app &> /dev/null &)

هذه هي إجابة ناثان فيلمان بالإضافة إلى إعادة التوجيه.

"&> / dev / null" يعيد توجيه كل من stdout و stderr إلى الجهاز الفارغ. آخر علامة الضم تجعل العملية قيد التشغيل في الخلفية. الأقواس حول الأمر سيؤدي إلى تشغيل "gui_app" في سلسلة فرعية.

سيؤدي القيام بذلك إلى فصل عملية "gui_app" من وحدة التحكم التي تقوم بتنفيذ هذا الأمر منها. لذلك ، حتى إذا قمت بإغلاق نافذة المحاكي الخاص بالنظام الأم ، فسيتم إغلاق "gui_app". ركضت هذا ثم نظرت إلى شجرة العملية مع الأمر "pstree" ووجدت تطبيقًا بدأ بهذه الطريقة سيصبح عملية طفل إلى "init".

فمثلا،

$ gui_app &> /dev/null &

سيقوم بتشغيل التطبيق في الخلفية ، ولكنه سيصبح عملية تابعة لعملية وحدة التحكم وسيتم إنهاء عند إغلاق المحطة. (على الرغم من أن الخروج من المحطة عن طريق bash باستخدام أمر exit أو Ctrl-D سيسمح لـ bash بالتنظيف عن طريق تسليم عملية الخلفية إلى init).

يعمل "nohup" كما اقترح NawaMan ، ولكن هذا يعيد توجيه الإخراج والخطأ إلى ملف افتراضيًا. كما أجاب JeffG ، يمكن للأمر "المنزوع" (إذا كان متاحًا في shell) فصل العملية عن المحطة الطرفية بعد أن تبدأ عملية الخلفية:

$ gui_app &
$ disown

(BTW كل هذا ينطبق على bash. أنا متأكد من أن قذائف أخرى لديها طرق / قواعد أخرى للقيام بذلك.)

بعض المرجع: عمليات الإهمال (أدوات UNIX الكهربائية)

إذا كانت مكالمة بسيطة لتطبيق واجهة المستخدم الرسومية - دون خيارات معقدة ومثل ذلك - يبدو باستخدام مشغل مثل "gmrun" أو dmenu (تحذير: صوت عالي) هو أيضًا خيار جيد. اربطها مع مجموعة المفاتيح. لا أستخدم برنامج تشغيل بعد ولكن جربت هذين الاثنين.

ملاحظة: CarlF في تعليقات الخيط الآخر تقارير لا تخرج تطبيقات واجهة المستخدم الرسومية التي بدأت عبر طريقة "gui_app &" عندما يخرج من المحطة الرئيسية. أعتقد أننا كنا نغلق الجهاز بطرق مختلفة. كنت أغلق النافذة التي يعمل بها المحاكي الطرفي. أعتقد أنه ربما كان يخرج من المحاكي الطرفي من خلال الصدفة (أمر الخروج أو Ctrl-D). لقد اختبرت هذا ورأيت أن الخروج من خلال باش لا يوقف واجهة المستخدم الرسومية كعملية أساسية في المحطة كما يقول كارل. يبدو أن أيد bash من العمليات الخلفية للبدء عندما يتم إعطاء الفرصة لتنظيف. في الواقع ، يجب أن يكون هذا هو الآلية التي يتم من خلالها بدء عملية الخلفية التي بدأت في subshell إلى init.


18
2018-04-03 21:19





يشمل use-linux أداة تسمى setid والتي تقوم أساسا بفعل ما يفعل:

$ setsid someprogram

هذا سوف يعمل someprogram في جلسة جديدة.


10
2018-05-12 10:06





جرب الكتابة xemacs & لفتح XEmacs في الخلفية.

من فضلك لا تشير إلى هذا "محاكاة سلوك ويندوز". أوتش.

هل يمكن أيضا:

  • افتح محطة جديدة
  • استخدم Alt + F2 أو مدير النوافذ لديك لبدء تشغيل البرنامج ، بدلاً من استخدام الجهاز
  • استخدم جنو الشاشة

9
2017-08-18 03:24





أضع التعليمة البرمجية التالية في ملف نصي قابل للتنفيذ يسمى "sbg" لـ "الخلفية الصامتة". إنه يقوم بكل الأشياء الضرورية لفصل البرنامج الذي يتم تشغيله بالكامل من shell: redirects stdin و stdout و stderr من / إلى /dev/null، يتجاهل hangups ، يعمل في الخلفية ، وينفصل.

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

ثم يمكنك القيام به sbg emacs. يمكنك أيضًا تمرير أي حجج تريدها: sbg emacs --daemon FILE1 FILE2.


7
2018-04-05 07:11



حل البرمجة النصية أفضل بالنسبة لي. شكر!! على الرغم من أنني استخدمتها (gui_app &> /dev/null &) بدلاً من ذلك (@ الإجابة من EMPraptor) - Jimi Oke