जब मुझे 'नौकरी बंद कर दी गई' त्रुटि मिलती है तो मुझे क्या करना चाहिए?


62

मैं कई बार इस प्रकार की स्थिति का सामना करता हूं।

उदाहरण के लिए, जब भी मैं अधिकारों के emacsसाथ कुछ फ़ाइल खोलने का प्रयास करता हूं sudo:

sudo emacs tet.c &

पासवर्ड के लिए मुझसे पूछने के बजाय उबंटू बस emacsकिसी भी emacsखिड़की या टर्मिनल पर किसी आउटपुट के बिना प्रक्रिया शुरू करता है (पिड को छोड़कर) छवि देखें (यदि मैं 'और' का उपयोग नहीं करता हूं तो यह मुझसे पासवर्ड के लिए पूछेगा):

यहाँ छवि विवरण दर्ज करें

मेरे पास इससे संबंधित दो प्रश्न हैं:

  1. जब मुझे त्रुटि मिलती है कि मुझे क्या करना चाहिए? ' मैं ऐसी सभी रुकी हुई नौकरियों की पहचान कैसे करूं और उन्हें मार दूं? एक बार जब मैं टर्मिनल को साफ कर देता हूं तो मेरे पास इन रुकी हुई प्रक्रियाओं के ढक्कन नहीं होंगे।

  2. Ubuntu / emacs इस तरह का व्यवहार क्यों कर रहा है? यह मुझसे पासवर्ड क्यों नहीं मांगता?

जवाबों:


77

There are stopped jobsसंदेश दूर है, दूर होना एक त्रुटि है। यह केवल एक सूचना है जो आपको बता रही है कि आप शेल से बाहर निकलने का प्रयास करते हैं, लेकिन आपके पास एक या एक से अधिक निलंबित कार्य / कार्यक्रम हैं (आपके मामले में emacsजिसे आपने &अपने कमांड के अंत में पृष्ठभूमि का उपयोग करके रखा था)। सिस्टम आपको शेल से बाहर निकलने और नौकरियों को मारने की अनुमति नहीं देता है जब तक कि आपका मतलब नहीं है। आप इस संदेश के जवाब में कुछ बातें कर सकते हैं:

  • jobsयह बताने के लिए कि आपने किस नौकरी को निलंबित किया है, कमांड का उपयोग करें
  • आप fgकमांड का उपयोग करके अग्रभूमि में नौकरी जोड़ना पसंद कर सकते हैं
  • यदि आपको परवाह नहीं है कि नौकरी समाप्त हो जाएगी, तो आप exitफिर से टाइप कर सकते हैं ; exitएक दूसरी बार या बिना किसी हस्तक्षेप के jobsकमांड टाइप करने से सभी निलंबित नौकरियों की समाप्ति हो जाएगी।

दूसरे प्रश्न का उत्तर देने के लिए, मैं आपको बताऊंगा कि उबंटू या ईमैक्स इस तरह का व्यवहार नहीं कर रहा है। यह एक सामान्य व्यवहार है जब आप पृष्ठभूमि में चलने के लिए एक एप्लिकेशन डालते हैं। इस मामले sudoमें पासवर्ड के लिए पूछ रहा है, लेकिन पृष्ठभूमि में पूछ रहा है, इसलिए आप इस तथ्य को नहीं देख सकते हैं। इसे देखने के लिए, आपको fgकमांड का उपयोग करके काम को अग्रभूमि में वापस लाना चाहिए :

radu@Radu: ~ $ sudo emacs tet.c &
[1] 7732
radu@Radu: ~ $ # now sudo emacs run in background so you can't see nothing about what's happening
radu@Radu: ~ $ fg
[sudo] password for radu:

इसके बाद आप चाहें तो बैकग्राउंड में फिर से काम करने के लिए Ctrl+ टाइप कर सकते Zहैं। फिर आप अग्रभूमि में नौकरी वापस लाने के लिए फिर से 'एफजी' कमांड चला सकते हैं।


मेरे लिए, इसका हमेशा टेलनेट। मैं भूल जाते हैं quit(देखें :) superuser.com/questions/486496/how-do-i-exit-telnet )
cmroanirgo

1
इसलिए, मैंने सिर्फ दो बार Ctrl + d दबाया (!) और पहले वाले के बाद एक ही संदेश मिला। क्या यह पता लगाने का कोई तरीका है कि जो काम मैंने अभी-अभी किया था वह क्या था?
मत्स्यम

19

आपको संदेश मिला है, क्योंकि सिस्टम आपको अपने वर्तमान शेल से जुड़े सक्रिय नौकरियों के बारे में चेतावनी देता है।

आप सूचीबद्ध कर सकते हैं इन चलाने / चलाकर नौकरियों बंद कर दिया: jobs,

तो आप निम्न में से एक कर सकते हैं:

  • अंतिम कार्य को अग्रभूमि में ले जाएं: fg( bgपृष्ठभूमि के लिए),
  • चलाने disownउनकी हत्या किए बिना अपना वर्तमान खोल से इन नौकरियों को दूर करने,
  • Ctrl+Dटाइपिंग exit/ logoutदो बार, जैसे ही, दो बार दबाकर इन कार्यों को मारने के लिए मजबूर करें
  • इन नौकरियों को मैन्युअल रूप से चलाकर मारें: kill $(jobs -p)( -9बल के लिए जोड़ें )
  • यदि आप उन्हें छोड़ देते हैं, और आप अभी भी सभी बंद प्रक्रियाओं को मारना चाहते हैं, तो कोशिश करें:

    kill $(ps wuax | awk 'NR>1 && $8 ~ "T" {print $2}')


प्रश्न का उत्तर देने के लिए sudo, यह आपसे पासवर्ड नहीं मांगेगा, क्योंकि इसके लिए मानक इनपुट से पासवर्ड प्राप्त करने के लिए सक्रिय टर्मिनल का होना आवश्यक है , और इसे पृष्ठभूमि में चलाकर, शेल कमांड के समाप्त होने की प्रतीक्षा नहीं करता है। , इसलिए आपके पास कमांड के साथ बातचीत करने की संभावना नहीं है।

इस स्थिति में, आपके पास 3 संभावनाएँ हैं:

  • पृष्ठभूमि में जाए बिना कमांड चलाएं ( &),
  • sudo -Sउदाहरण के लिए टर्मिनल डिवाइस के बजाय मानक इनपुट से पासवर्ड पढ़ें

    echo mypass | sudo emacs tet.c
    
  • visudoकमांड और संपादन sudoersफ़ाइल द्वारा sudo को पासवर्ड नहीं पूछने के लिए कॉन्फ़िगर करें । देखें: उपयोगकर्ता के लिए सक्षम NOPASSWDकरें


6

जब आप मुठभेड़ करते हैं तो नौकरी में त्रुटि होती है:

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