मैं gedit कमांड चलने के दौरान टर्मिनल का उपयोग नहीं कर सकता


44

मैंने हाल ही में 12.04 स्थापित किया है।
जब मैं gedit के साथ किसी फ़ाइल को संपादित करने का प्रयास करता हूं, तब तक मैं टर्मिनल का उपयोग नहीं कर सकता जब तक कि मैं संपादन फ़ाइल बंद नहीं करता या मुझे एक नया टर्मिनल नहीं खोलना पड़ता। लेकिन मुझे लगता है कि मुझे 11.04 के साथ यह समस्या नहीं थी, हालांकि मुझे यकीन नहीं है।
क्या इससे बचने के लिए और फ़ाइलों को संपादित करते समय एक ही टर्मिनल का उपयोग करने के लिए है।

जवाबों:


80

संक्षिप्त जवाब

गैर-जिम्मेदार टर्मिनल में:

  1. मारो Ctrl+ Z
  2. टाइप करें bgऔर एंटर करें।
  3. टाइप करें disownऔर एंटर करें।

लंबा जवाब

अनुत्तरदायी टर्मिनल में, हिट Ctrl+ Z, यह प्रक्रिया (या "नौकरी") को "रोक" देगा और कंसोल नियंत्रण को आपके पास लौटा देगा। हालाँकि, आप देखेंगे कि geditयह अनुत्तरदायी हो जाता है और आप इसका उपयोग नहीं कर सकते।

अतिरिक्त : यदि आप चाहते हैं, तो आप कमांड को निष्पादित कर सकते हैं jobs, आप देखेंगे कि यह कमांड के लिए स्टॉप पढ़ेगा gedit, इसीलिए आप इसका उपयोग नहीं कर सकते।

कार्य को सफलतापूर्वक पृष्ठभूमि में चलाने के लिए (यानी geditफिर से उत्तरदायी बनाने के लिए), कमांड निष्पादित करें bg(अर्थ पृष्ठभूमि)। अब आप उपयोग करने में सक्षम होंगे gedit, और साथ ही साथ अपने आप को संकेत देंगे ।

अतिरिक्त : अब, यदि आप निष्पादित करते हैं, तो आप jobsदेखेंगे कि यह रनिंग पढ़ेगा ।

आप शुरू से ही इस सब पर काबू पा सकते हैं। जब आप geditटर्मिनल से लॉन्च कर रहे हैं &, तो कमांड के अंत में एक जोड़ें , इसलिए कुछ इस तरह gedit /path/to/file &। यह geditपहले स्थान से पृष्ठभूमि में लॉन्च होगा (आपको Enterकंसोल नियंत्रण वापस पाने के लिए कई बार हिट करने की आवश्यकता हो सकती है )।

अतिरिक्त : यदि आप इन अतिरिक्त नोटों का पालन कर रहे थे, तो आपने देखा होगा कि दूसरी बार जब आप काम करते हैं jobs, तो आप देख सकते हैं कि कमांड &के अंत में बैश को जोड़ा गया है gedit

एक बार जब आप इस प्रणाली के लिए अभ्यस्त हो जाते हैं, तो आप नोटिस कर सकते हैं कि यदि आप टर्मिनल को बंद करते हैं, तो एक पुष्टिकरण संवाद के बिना, gedit भी समाप्त हो जाएगा। ऐसा होने से रोकने के लिए, रन disown, जो टर्मिनल से gedit प्रक्रिया को अलग कर देगा, द्वारा दी गई सूची से हटा देगा jobs


2
यह मुझे हमेशा आश्चर्यचकित करता है कि अग्रभूमि में चल रही प्रक्रिया को तुरंत पृष्ठभूमि देने का कोई तरीका नहीं है। आप है पहले रोकने के लिए, जो कभी कभी व्यवहार्य नहीं है।
13:15 पर

@detly भाग को "आप दूर कर सकते हैं ..." फिर से पढ़ें!
गुंटबर्ट

@guntbert - अगर प्रक्रिया पहले से ही चल रही है तो मदद नहीं करता ...
23:15 पर

44

बस टाइप करो:

gedit <filename-to-edit> &

यह आपको तुरंत कमांड प्रॉम्प्ट लौटा देगा।


5
यह एक महत्वपूर्ण यूनिक्स मुहावरा है, और जानने लायक है। किसी भी कमांड को इस तरह बैकग्राउंड में चलाया जा सकता है। ऐसे उपकरण जो इंटरएक्टिव हैं, स्पष्ट रूप से इस उपचार से भ्रमित होंगे, लेकिन उदाहरण के लिए bubbleort war_and_peace.txt% आपके सॉर्टर को मास्टरपीस (लंबे समय तक, लंबे समय तक) से दूर रखने की अनुमति देगा, जबकि आप अपने काम के साथ (कहते हैं, क्विकसर्ट लागू करना) या कुछ और)
जॉन किपरस्की

1
@JonKiparsky Amuse उदाहरण - बात बनाता है।
जो

25

आप nohupGUI को टर्मिनल से संलग्न होने से रोकने के लिए उपयोग कर सकते हैं :

nohup mupdf some.pdf &

यह आपको उस टर्मिनल को बंद करने की अनुमति देगा, जिसे आप प्रोग्राम से बंद किए बिना लॉन्च कर रहे हैं।

आप यह भी चाहिए, कि nohup आदेश के साथ एक फ़ाइल पैदा करेगा stdoutऔर stderrआदेश आप चलाने की। यदि आप इसे रोकना चाहते हैं, तो &>/dev/nullइससे पहले जोड़ें &

nohup mupdf some.pdf &>/dev/null &

4
"नोहाप" का अर्थ "नो हैंग अप" है। यह प्रारंभिक यूनिक्स की तारीखों का है, जब (भौतिक) टर्मिनलों को नियमित रूप से टेलीफोन लाइनों के माध्यम से जोड़ा गया था, और इसलिए आप फोन को लटकाकर एक टर्मिनल बंद कर देंगे।
MSalters

3
अतिरिक्त जानकारी: nohup कमांड कमांड nohup.outसे आउटपुट वाली फाइल बनाएगी । यदि आप त्रुटि संदेश देखना चाहते हैं तो यह उपयोगी है। यदि आप फ़ाइल नहीं बनाना चाहते हैं, तो निम्नानुसार पुनर्निर्देशन जोड़ें:nohup mupdf some.pdf &>/dev/null &
धान लैंडौ

19

आप disownकमांड का उपयोग भी कर सकते हैं । यह विशेष रूप से तब उपयोगी होता है जब आप पहले ही प्रक्रिया शुरू कर चुके होते हैं जिसे आप टर्मिनल से संलग्न नहीं करना चाहते हैं।

मूल प्रक्रिया यदि मुझे सही ढंग से याद है, तो कुछ इस तरह है:

$ > firefox      #Oops
Ctrl + z         #Suspend the process
$ > bg           #Push the process to the background
$ > disown       #Detach most recent process started or stopped
$ > exit         #Terminal gone!

ध्यान दें कि विस्थापित bashविशिष्ट है।

यह ब्लॉग पोस्ट दोनों विधियों को बहुत अच्छी तरह से समझाता है।

डिसाइड के लिए मैन पेज


एक शॉर्टकट:firefox & disown
फ्लिम

13

से man gedit:

-b, --background
         Run gedit in the background.

इसलिए, यदि आप विकल्प के geditसाथ चलते हैं, तो -bयह पृष्ठभूमि में शुरू होगा:

gedit -b [FILE-NAME]

इसके अलावा, अगले के लिए आप एक उपनाम बना सकते हैं gedit -b( यहां देखें कि स्थायी उपनाम कैसे बनाएं):

alias gedit='gedit -b'

अब से, भविष्य में आप gedit [FILE-NAME]सामान्य रूप से उपयोग कर सकते हैं और यह पृष्ठभूमि में शुरू होगा।


2
सामान्य आदेशों को फिर से परिभाषित करने के लिए उपनाम का उपयोग करना एक बुरा विचार है। इसके ढेर सारे धागे आपको स्टैकएक्सचेंज पर मिलेंगे। एक अलग नाम के साथ एक उपनाम का उपयोग करना ठीक है। संक्षेप में, मौजूदा आदेशों का उपयोग करने से आपकी मशीन पर अप्रत्याशित व्यवहार होता है यदि कोई व्यक्ति कभी भी इसका उपयोग करता है (जैसे कि जब आप किसी अन्य समस्या को ठीक करने में मदद करने की कोशिश कर रहे हों) और यह आपके लिए वही काम करता है जब आप उन उपनामों और आदेशों के बिना किसी अन्य प्रणाली का उपयोग करते हैं। उम्मीद के मुताबिक काम न करें। इसके लिए पोस्टर बच्चों में से एक उर्फ ​​आरएम = 'आरएम -आई' है। यह आपको एक दूसरे मौके के साथ चीजों को हटाने की आदत डाल देता है जो हमेशा नहीं होता है।
जो

10

बस टाइप करो:

gedit FILENAME & disown

&बैश के साथ एक कमांड को समाप्त करना पृष्ठभूमि में उस कमांड को चलाता है। हालाँकि, वह प्रक्रिया अभी भी टर्मिनल से जुड़ी हुई है।

बिना disown, यदि आप टर्मिनल को बंद करते हैं, तो gedit बंद हो जाएगा, यहां तक ​​कि आपको संपादित फ़ाइल को सहेजने के लिए संकेत दिए बिना। disownवर्तमान टर्मिनल से पृष्ठभूमि प्रक्रिया को अलग करता है, ताकि यदि आप टर्मिनल को बंद कर दें, तो gedit सामान्य रूप से चलता रहेगा। यह पता चला कि मैं गलत था, यह मारपीट का मामला नहीं है, बल्कि यह ज़श का मामला है। तुम अब भी चलाने की आवश्यकता detachकरने के बाद ctrl- zऔर bg, हालांकि, यहां तक कि पार्टी में।

आप अंतर्निहित विशेष रूप से कमांड के लिए मैनपेज में मेटाचचर jobs, disownऔर विशेषकर "विशेष नियंत्रण" लेबल वाले अनुभाग के बारे में अधिक जानकारी प्राप्त कर सकते हैं ।&bashमैनपेज आइकन


साथ disownमैं टर्मिनल बंद के बाद एडिट खुला रखने के लिए सक्षम था। मुझे वह नहीं मिला जिसके बारे में आपने कहा "यह मारपीट का मामला नहीं है, लेकिन यह zsh का मामला है"
KrHsHnA

0

यह संभवतः इसलिए है क्योंकि आपने टर्मिनल के माध्यम से gedit खोला है। जब आप ऐसा करते हैं, तो आप कमांड लाइन आउटपुट देखते हैं जो सामान्य रूप से GUI के माध्यम से शुरू होने पर छिपाया जाता है। इसे ठीक करने का सबसे अच्छा तरीका एक नई टर्मिनल विंडो खोलना है। अन्य gedit के बंद होने के बाद उपलब्ध हो जाएगा। आप उपर्युक्त उपयोगकर्ता के स्विच का उपयोग भी कर सकते हैं।


एक नई टर्मिनल विंडो सिर्फ डेस्कटॉप को बंद कर देती है, भले ही यह कम से कम हो। उपयोग करना और उसके साथ या उसके बिना बहुत सरल और साफ है।
जो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.