सवाल कमांड लाइन से जीयूआई लिनक्स प्रोग्राम कैसे शुरू करें, लेकिन कमांड लाइन से अलग?


मैंने पहले इसकी खोज की है, लेकिन कभी जवाब नहीं मिला है।

विंडोज़ में, अगर मेरे पास कंसोल विंडो खुलती है, तो टाइप करें winmine, और एंटर दबाएं, माइन्सवीपर दिखाई देगा, पूरी तरह से cmd प्रोग्राम से अलग होगा। माइन्सवीपर का उदाहरण कमांड प्रॉम्प्ट के उस उदाहरण पर सेट होने के कारण माइस्वेपर के माता-पिता के अपवाद के साथ, कमांड प्रॉम्प्ट से किसी भी तरह से जुड़ा हुआ नहीं है। लिनक्स में यह अलग है, हालांकि।

लिनक्स में, अगर मेरे पास कंसोल विंडो खुलती है, तो टाइप करें emacs और एंटर दबाएं, Emacs खुल जाएगा, लेकिन यह कमांड लाइन से बंधे लगता है। विशेष रूप से, ऐसा लगता है कि जब तक Emacs बंद नहीं होता है तब तक मैं कमांड लाइन का उपयोग नहीं कर सकता। क्या लिनक्स में विंडोज व्यवहार को दोहराने का कोई तरीका है?

धन्यवाद!


86
2017-08-18 03:22


मूल


की नकल:superuser.com/questions/178587/... - behrooz
कृपया geekosaur का जवाब दें। - Joshua Robison
windows7 में यह minesweeper.exe है यहां सी: \ प्रोग्राम फ़ाइलें \ माइक्रोसॉफ्ट गेम्स \ माइन्सवेपर इसलिए 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



वही है जो मैं चाहता था। धन्यवाद!
मैं विशेष रूप से (emacs और) टिप पसंद है।
यदि आप पहले से ही कार्य (emancs) शुरू कर चुके हैं, तो सोने के लिए CTRL-Z का उपयोग करें और फिर पृष्ठभूमि को भेजने के लिए "बीजी" कमांड का उपयोग करें। - Jayan
@StackTrace: यदि आप ऐसा करते हैं, और आप अपना टर्मिनल बंद करते हैं, तो यह भी emacs को मार देगा। - Nathan Fellman
ठीक है .. मैं इसे "नोहुप" का उपयोग करने के लिए इस्तेमाल करता था। प्रक्रिया शुरू होने के बाद यह नहीं किया जा सकता है ... - Jayan


उपयोग nohup। ऐशे ही: nohup amarok &

उम्मीद है की यह मदद करेगा।


19
2017-08-18 03:26





मैंने लिखा एक जवाब विभिन्न स्रोतों के उत्तरों के साथ समान विषय के पुराने धागे के लिए। इस धागे के लिए अनुकूलित उत्तर की एक प्रति निम्नलिखित है।


निम्नलिखित कार्य:

$ (gui_app &> /dev/null &)

यह नाथन फेलमैन का उत्तर प्लस पुनर्निर्देशन है।

"&> / dev / null" दोनों stdout और stderr को null डिवाइस पर रीडायरेक्ट करता है। आखिरी एम्पर्सेंड प्रक्रिया को पृष्ठभूमि में चलाता है। कमांड के चारों ओर कोष्ठक आपके "gui_app" को सबहेल में चलाने का कारण बनेंगे।

ऐसा करने से आप कंसोल से "gui_app" प्रक्रिया को अलग कर देंगे जिससे आप इस कमांड को निष्पादित करेंगे। तो यदि आप विंडो पैरेंट टर्मिनल एमुलेटर को बंद कर रहे हैं, तो भी "gui_app" बंद नहीं होगा। मैंने इसे चलाया और फिर "पस्ट्री" कमांड के साथ प्रक्रिया पेड़ को देखा और पाया कि इस तरह से एक आवेदन शुरू हो गया है "init" के लिए बाल प्रक्रिया बन जाएगी।

उदाहरण के लिए,

$ gui_app &> /dev/null &

पृष्ठभूमि में एप्लिकेशन चलाएगा, लेकिन यह कंसोल प्रक्रिया की एक बाल प्रक्रिया बन जाएगा और टर्मिनल को बंद करते समय समाप्त हो जाएगा। (हालांकि बाहर निकलने के आदेश या Ctrl-D का उपयोग कर बैश के माध्यम से टर्मिनल से बाहर निकलने के लिए पृष्ठभूमि प्रक्रिया को इनिट करने के लिए बाश साफ़ कर दिया जाएगा।)

"नोहुप" काम करता है क्योंकि नवामन ने सुझाव दिया है, लेकिन यह डिफ़ॉल्ट रूप से आउटपुट और त्रुटि को फ़ाइल में रीडायरेक्ट करता है। जैसा कि जेफजी ने जवाब दिया है, "अस्वीकार" आदेश (यदि खोल में उपलब्ध है) पृष्ठभूमि प्रक्रिया शुरू करने के बाद टर्मिनल से प्रक्रिया को अलग कर सकते हैं:

$ gui_app &
$ disown

(बीटीडब्ल्यू यह सब बैश पर लागू होता है। मुझे यकीन है कि अन्य गोले में ऐसा करने के लिए अन्य विधियां / वाक्यविन्यास हैं।)

कुछ संदर्भ: अस्वीकार प्रक्रियाएं (यूनिक्स पावर टूल्स)

यदि यह एक जीयूआई अनुप्रयोग के लिए एक साधारण कॉल है - जटिल विकल्पों के बिना और ऐसा - ऐसा लगता है कि "gmrun" जैसे लॉन्चर का उपयोग करना या dmenu (चेतावनी: जोर से ऑडियो) भी एक अच्छा विकल्प है। इसे एक महत्वपूर्ण संयोजन से बांधें। मैं अभी तक एक लॉन्चर का उपयोग नहीं करता हूं लेकिन उन दोनों की कोशिश की है।

नोट: में कार्लएफ अन्य धागे की टिप्पणियां "gui_app &" विधि के माध्यम से शुरू किए गए जीयूआई ऐप्स की रिपोर्ट तब होती है जब वह मूल टर्मिनल से बाहर निकलता है। मुझे लगता है कि हम टर्मिनल को विभिन्न तरीकों से बंद कर रहे थे। मैं खिड़की को बंद कर रहा था टर्मिनल एमुलेटर चल रहा था। मुझे लगता है कि वह शेल (निकास आदेश या Ctrl-D) के माध्यम से टर्मिनल एमुलेटर से बाहर निकल रहा होगा। मैंने इसका परीक्षण किया और देखा कि बैश के माध्यम से निकलने से जीआरआई टर्मिनल की पृष्ठभूमि प्रक्रिया के रूप में शुरू नहीं होता है क्योंकि कार्लएफ का कहना है। ऐसा लगता है कि इसे साफ करने का मौका दिया जाता है जब पृष्ठभूमि प्रक्रियाओं को बंद कर देता है। असल में, यह वह तंत्र होना चाहिए जिसके द्वारा सबहेल में पृष्ठभूमि प्रक्रिया शुरू हो जाती है।


18
2018-04-03 21:19





उपयोग-लिनक्स में सेटिड नामक एक उपकरण शामिल होता है जो मूल रूप से करता है जो अलग करता है:

$ setsid someprogram

यह दौड़ जाएगा someprogram एक नए सत्र में।


10
2018-05-12 10:06





टाइपिंग का प्रयास करें xemacs & पृष्ठभूमि में XEmacs खोलने के लिए।

कृपया इसे "विंडोज़ व्यवहार को अनुकरण" के रूप में संदर्भित न करें। आउच।

आप यह भी कर सकते हैं:

  • एक नया टर्मिनल खोलें
  • टर्मिनल का उपयोग करने के बजाय प्रोग्राम लॉन्च करने के लिए Alt + F2 या अपने विंडो मैनेजर का उपयोग करें
  • जीएनयू स्क्रीन का प्रयोग करें

9
2017-08-18 03:24





मैंने निम्नलिखित कोड को "मूक पृष्ठभूमि" के लिए "sbg" नामक निष्पादन योग्य स्क्रिप्ट फ़ाइल में रखा है। शैल से शुरू होने वाले कार्यक्रम को पूरी तरह से डिस्कनेक्ट करने के लिए यह सभी आवश्यक चीजें करता है: stdin, stdout और stderr को / से रीडायरेक्ट करता है /dev/null, हैंगअप को अनदेखा करता है, पृष्ठभूमि में चलता है, और अलग करता है।

#!/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


command &

आदेश के बाद एक ampersand रखो।


3
2017-08-18 03:25





यदि आप बैश का उपयोग कर रहे हैं, तो आप प्रक्रिया को अस्वीकार कर सकते हैं:

% firefox &
% disown 

3
2018-03-04 00:16





आप इस सिंगल लाइन का उपयोग कर सकते हैं:

$ emacs & disown

2
2017-08-06 03:29