सवाल क्या इसके टर्मिनल से प्रक्रिया को अलग करना संभव है? (या, "मुझे स्क्रीन का उपयोग करना चाहिए था!") [डुप्लिकेट]


संभावित डुप्लिकेट:
क्या मैं पहले से शुरू की गई प्रक्रिया को दोबारा / स्क्रीन कर सकता हूं? 

यूनिक्स (विशेष रूप से, लिनक्स) पर, मैंने एक नियमित ssh-> बैश सत्र में नौकरी शुरू कर दी है। मैं जल्द ही काम छोड़ना चाहता हूं, लेकिन अब मुझे एहसास हुआ कि नौकरी में कई घंटे लगेंगे।

अगर मैंने अभी इस काम को स्क्रीन में शुरू किया था, तो मैं अलग होकर घर जा सकता था। लेकिन मैंने नहीं किया।

क्या नौकरी को अपने एसएसएच सत्र से डिस्कनेक्ट करने का कोई तरीका है, इसलिए मैं अपना कंप्यूटर बंद कर सकता हूं, (टीसीपी कनेक्शन छोड़ना और एसएसएच सत्र को मारना), और फिर भी प्रोग्राम चल रहा है?

मुझे इसके आउटपुट की परवाह नहीं है - वास्तव में, मैंने stdout को एक फ़ाइल में रीडायरेक्ट किया है। मैं बस इसे पूरा करने के लिए चलाने के लिए चाहता हूँ।


116
2017-07-01 22:16


मूल




जवाब:


आप दबा सकते हैं ctrl-z प्रक्रिया को बाधित करने के लिए और फिर चलाएं bg इसे पृष्ठभूमि में चलाने के लिए।

आप इस तरह से पृष्ठभूमि की सभी प्रक्रियाओं की एक क्रमांकित सूची दिखा सकते हैं jobs

फिर आप दौड़ सकते हैं disown %1 (बदलने के 1 प्रक्रिया संख्या आउटपुट के साथ jobs) टर्मिनल से प्रक्रिया को अलग करने के लिए।

नाम के बावजूद, चलने के बाद भी प्रक्रिया आपके स्वामित्व में होगी disown, इसे केवल उस टर्मिनल से अलग किया जाएगा जिसमें आपने इसे शुरू किया था।

इस उत्तर में अधिक जानकारी है


156
2017-07-01 22:26



इस प्रक्रिया को आजमाने के लिए कितना सुरक्षित है? कोई गॉथस? - ndemou


मेरा मानना ​​है कि जिस आदेश को आप ढूंढ रहे हैं वह "अस्वीकार" है


17
2017-08-19 16:32





अपने बैश खोल के भीतर से:

control+z

फिर, पृष्ठभूमि में नौकरी चलाने के लिए जारी रखें:

bg

बाद में, आप टाइप कर सकते हैं jobs  यह देखने के लिए कि आपकी प्रक्रिया अभी भी चल रही है या नहीं।


8
2017-07-01 22:23



जब मैं अपना खोल बंद करता हूं तो क्या यह नहीं मारा जाएगा? - mike
नहीं, कम से कम नहीं, अगर आप बैश चला रहे हैं। नौकरी आपके एसएसएच सत्र के पीपीआईडी ​​से अलग हो जाएगी, और फिर भी आपके उपयोगकर्ता नाम के रूप में सर्वर पर चल रही है। - Joe
जब आप खोल बंद करते हैं तो उपरोक्त निर्देश प्रक्रिया से बाहर निकलने का कारण बनेंगे। आपको अतिरिक्त रूप से 'अस्वीकार' कमांड / बिल्टिन (यह बैश में है) चलाने की आवश्यकता है, जो शेल से प्रक्रिया को अलग कर देगा और बाहर निकलने पर प्रक्रिया को एचयूपी सिग्नल नहीं भेजेगा। - Mark
बैश के मेरे संस्करण पर [3.2.25 (1) -release (i686-redhat-linux-gnu)], मैंने प्रक्रिया का परीक्षण किया, और डिस्कनेक्ट करने से पहले नौकरी को अस्वीकार करने की आवश्यकता नहीं थी। बच्चे पीआईडी ​​पैरेंट पीआईडी ​​से डिस्कनेक्ट हो गया, और बिना किसी रुकावट के मेरे उपयोगकर्ता नाम के रूप में चल रहा था। वाईएमएमवी, मुझे लगता है। - Joe


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


5
2018-05-16 14:07





उपयोग
नोहप कमांड &

सुंदर है:
रूट @ इंडेक्स: ~ # नोहुप / यूएसआर / बिन / कर्ल लोकलहोस्ट / begemot.php &
[1] 894
रूट @ इंडेक्स: ~ # नोहुप: इनपुट को अनदेखा करना और आउटपुट को 'nohup.out' में जोड़ना

और इस टर्मिनल से बाहर निकलने के लिए, एक कार्य जारी रखा जाना जारी है ...

5
2018-05-24 09:23





Crtl-z का उपयोग करते समय बीजी या कमांड चलाते समय और 100% पर भरोसेमंद नहीं है। यह ज्यादातर मामलों में काम करेगा लेकिन कुछ मामलों में अपेक्षित काम नहीं कर सकता है (I / O उपयोग, ...)।
स्क्रीन एक विश्वसनीय समाधान है।


4
2017-07-01 22:34



ध्यान दें कि retty (pasky.or.cz/~pasky/dev/retty) एक ऐसा उपकरण है जो आपको स्क्रीन के बाहर स्क्रीन पर चलने वाली प्रक्रिया को स्थानांतरित करने देता है। यदि आप भूल जाते हैं तो आपको स्क्रीन में नौकरी देने के लिए उपयोगी हो सकता है। फिर आप नौकरी के किसी भी जोखिम के बिना स्क्रीन को सुरक्षित रूप से अलग कर सकते हैं। - radius


मैंने स्थापित करने के लिए लिया है screen जब मैं मेजबान से कनेक्ट करता हूं तो ऑटो-रन करने के लिए मैं इस समस्या से बचने के लिए नियमित रूप से उपयोग करता हूं।

http://tlug.dnho.net/?q=node/239 ऐसा करने का एक तरीका है, हालांकि वहां अन्य भिन्नताएं हैं।

मुझे एक या दो बार बचाया गया है जब मेरे पास अप्रत्याशित डिस्कनेक्शन मध्य-सत्र था और अन्यथा शुरू करना भूल गया था screen इससे पहले कि मैंने कुछ लंबी हवाओं की शुरुआत की।


4
2017-07-01 22:50





यदि आप बैश का उपयोग कर रहे हैं, तो आप बीजी के साथ नियंत्रण-जेड और पृष्ठभूमि के साथ संदेह कर सकते हैं।

नौकरी नियंत्रण (आदमी बाश से)

 If the operating system on which bash is running supports job 
 control, bash contains facilities to use it.   Typing the  
 suspend  character  (typically ^Z, Control-Z) while a process 
 is running causes that process to be stopped and returns control 
 to bash.  Typing the delayed suspend character (typically ^Y, 
 Control-Y) causes the process  to  be stopped  when  it  
 attempts to read input from the terminal, and control to be 
 returned to bash.

मदद बीजी

bg: bg [job_spec ...]
    Place each JOB_SPEC in the background, as if it had been started with
    `&'.  If JOB_SPEC is not present, the shell's notion of the current
    job is used.

नौकरियों में मदद करें

jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Lists the active jobs.  The -l option lists process id's in addition
    to the normal information; the -p option lists process id's only.

3
2017-07-01 22:23



जब मैं अपने कंप्यूटर को बंद करता हूं, तो एसएसएच सत्र को अलग करने और खोल को मारने पर इसे मार नहीं दिया जाएगा? - mike
रुको, क्या आप अपने स्थानीय कंप्यूटर पर कमांड चला रहे हैं और कुछ इनपुट / आउटपुट के लिए एसएसएच का उपयोग कर रहे हैं? या यह रिमोट कंप्यूटर पर चल रहा है? यदि आदेश दूरस्थ कंप्यूटर पर चल रहा है, तो आप इसे पृष्ठभूमि और डिस्कनेक्ट करने में सक्षम होना चाहिए। - Zoredache


यदि आप पहले से जानते हैं कि आप इसे पृष्ठभूमि में चलाना चाहते हैं, तो यूनिक्स कमांड पर एक अच्छा विकल्प है। यह नियत समय पर पृष्ठभूमि में कमांड शुरू करता है, बस एक क्रॉन नौकरी की तरह जो दोहराया नहीं जाता है। आपके वितरण के आधार पर, आपको इसे स्थापित करने और एडीडी डिमन शुरू करने की आवश्यकता हो सकती है।


2
2018-04-04 12:58