मैं लिनक्स में एक रुका हुआ काम कैसे फिर से शुरू कर सकता हूं?


342

मैं लिनक्स में एक रुका हुआ काम कैसे फिर से शुरू कर सकता हूं? मैं emacs का उपयोग कर रहा था और गलती से ctrl-z मारा जिसने मुझे कंसोल पर वापस विस्फोट कर दिया। मैं इसे देख सकता हूं जब मैं 'जॉब' टाइप करता हूं

[*****]$ jobs
[1]+  Stopped                 emacs test_queue.cpp

यह वास्तव में विम के लिए एक काफी सामान्य कार्य प्रवाह है, यदि आप अपने बैश इतिहास में आपको कमांड रखना चाहते हैं, तो आप Ctrl-zअपने कमांड टाइप करें और फिर से शुरू करें। जाहिर है आप :!एड कमांड के माध्यम से विम को छोड़ने के बिना कमांड चला सकते हैं
icc97

जवाबों:


381

कमांड fgवह है जिसे आप उपयोग करना चाहते हैं। यदि आप एक से अधिक रोके गए जॉब हैं तो आप इसे जॉब नंबर भी दे सकते हैं।


59
संदर्भ के लिए, एफजी "अग्रभूमि" है। आप "बीजी" के साथ पृष्ठभूमि में भी काम जारी रख सकते हैं।
सेरेक्स

260

लिनक्स में सामान्य नौकरी नियंत्रण आदेश हैं:

  • नौकरियों - वर्तमान नौकरियों की सूची
  • fg - कतार में अगले काम को फिर से शुरू करें
  • fg% [संख्या] - फिर से शुरू नौकरी [संख्या]
  • बीजी - पृष्ठभूमि में कतार में अगले काम को धक्का दें
  • bg% [संख्या] - पृष्ठभूमि में कार्य [संख्या] को धक्का दें
  • मार% [संख्या] - काम मारा संख्या [संख्या]
  • मार - [सिग्नल]% [संख्या] - नौकरी नंबर [संख्या] को सिग्नल [सिग्नल] भेजें
  • अस्वीकृत% [संख्या] - इस प्रक्रिया को भंग कर दिया (कोई और टर्मिनल स्वामी नहीं होगा), इसलिए कमांड टर्मिनल को बंद करने के बाद भी जीवित रहेगा।

यह सब बहुत ज्यादा है। कमांड में जॉब नंबर के% infront पर ध्यान दें - यह वह है जो बताता है कि आप नौकरियों के बारे में बात कर रहे हैं न कि प्रक्रियाओं के बारे में।


30
मैं "मार% 1" से बचता हूं क्योंकि इसे "किल 1" के रूप में गलत
समझना

5
@barrycarter यह बहुत सच है। मैं आमतौर पर fgएक Ctrl-C;)
14:30 बजे माजेंको

6
@barry: यही वजह है कि अपस्टार्ट में init डिफ़ॉल्ट रूप से SIG {TERM, KILL} को अनदेखा करता है।
हैलो'१

7
और, निश्चित रूप से, "रूट के रूप में कभी नहीं चला";)
बैरीकेटर

47

आप भी टाइप कर सकते हैं %<process_name>; यानी, आप emacs में Ctrl-Z मारते हैं, फिर आप %emacsकंसोल में टाइप कर सकते हैं और इसे अग्रभूमि में वापस ला सकते हैं।


यह जानकर बहुत अच्छा लगा
ZAD-Man

33

बस दूसरे उत्तरों को जोड़ने के लिए, यदि आप कोई जॉब नंबर निर्दिष्ट करते हैं , तो bash आपको छोड़ देता है fg

उदाहरण के लिए, ये समकक्ष हैं और नवीनतम नौकरी को फिर से शुरू करते हैं:

%
%%
fg
fg %

ये फिर से शुरू नौकरी # 4:

%4
fg 4

2
जबकि यह एक प्रकार का शांत है, फिर भी मुझे इसके fgमुकाबले टाइप करना आसान लगता है %
आरआर-

3
%बहुत बढ़िया, धन्यवाद! स्पर्श-टाइपिस्ट के रूप में, मुझे fgबहुत चिढ़ (एक ही उंगली) मिलती है । लेकिन फिर, ऐसा है cd
गौथियर

और आप इसे पृष्ठभूमि में या तो bg %या बस के साथ शुरू कर सकते हैं % &
वाइल्डकार्ड

मेरे मामले में जब मैंने fg का उपयोग करने की कोशिश की तो मुझे लगता है कि रोक दी गई प्रक्रिया दिखाई देती है और जल्दी से गायब हो जाती है और बस <fg%> इसे पुनर्स्थापित करने में सफल रही।
लेफी तारिक

20

यदि आपने इसे वर्तमान टर्मिनल से लॉन्च नहीं किया है ps aux | grep <process name>, तो प्रक्रिया संख्या (पीआईडी) खोजने के लिए उपयोग करें, फिर इसे फिर से शुरू करें:

kill -SIGCONT <pid>

(नाम के बावजूद, killप्रक्रिया को एक संकेत भेजने के लिए बस एक उपकरण है, प्रक्रियाओं को एक दूसरे के साथ संवाद करने की अनुमति देता है। "किल सिग्नल" कई मानक संकेतों में से एक है।)

बोनस टिप: परिणाम में प्रकट होने वाली कमांड []को रोकने के लिए प्रक्रिया नाम के पहले वर्ण को लपेटें grepemacsप्रक्रिया खोजने के लिए , उपयोग करेंps aux | grep [e]macs


2
यह भी काम करता है अगर आप एक रुकी हुई प्रक्रिया को
समाप्त करते हैं

क्या आप इसके इनपुट / आउटपुट तक पहुँच प्राप्त कर सकते हैं जैसा कि आपके कहने पर होता है fg?
सिप्रियन टॉमोयागॉ

यह जॉब नंबर के साथ काम करने की तुलना में अधिक लचीला दृष्टिकोण है। थम्स अप।
thomp45793
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.