मैं पोटीन सत्र बंद करने के बाद एक प्रक्रिया को कैसे जीवित रख सकता हूं?


41

मैं लिनक्स सर्वर के साथ बातचीत करने के लिए पोटीन का उपयोग कर रहा हूं। मैंने पोटीन का उपयोग करके एक प्रक्रिया शुरू की है। प्रक्रिया चल रही है और इसमें 5-6 घंटे लगेंगे। मैं चाहता हूं कि मैं पुट्टी सत्र बंद करने के बाद वह प्रक्रिया जारी रखूं। पोटीन सत्र बंद करने के बाद मैं उस प्रक्रिया को कैसे जीवित रख सकता हूं? मैं हर समय कंप्यूटर चालू नहीं रखना चाहता। क्या इसे करने का कोई तरीका है?।

जवाबों:


32

मैं उस तरह के सामान के लिए स्क्रीन का उपयोग करता हूं । वास्तव में कभी-कभी मैं इसे बस थोड़ी देर पर छोड़ देता हूं ताकि मैं वापस वही कर सकूं जो मैं कर रहा था।


प्रक्रिया, अब चल रहा है यह है कि इस प्रक्रिया के लिए काम करते हैं क्योंकि प्रक्रिया बीच में है मैं पूछ रहा हूँ और मैं अब इसे पुनः प्रारंभ नहीं करना चाहती है?

मेरे निर्विवाद पसंदीदा कमांड लाइन टूल का उल्लेख करने के लिए +1। यह इस तरह की स्थितियों में एक रत्न है।
नौफाल इब्राहिम

@ नौफ़ल, पूरी तरह से! @ प्रकाश, आपको किसी भी प्रक्रिया को शुरू करने से पहले स्क्रीन को चलाने की आवश्यकता है
जिया

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

लिंक अब काम नहीं करता है
Malky.Kid 16'18

31
^Z
bg %1
disown -h %1

जब सत्र पूरा हो जाता है, तो '-एच' प्रक्रिया को प्रतिरक्षा बनाता है।


3
ध्यान दें कि इस प्रक्रिया को 'फिर से' या 'अपनाने' का कोई तरीका नहीं है - एक बार जब आप ऐसा कर लेते हैं, तो आप इसे कभी भी अग्रभूमि में नहीं ला सकते। यदि प्रक्रिया एक बैच का काम है जो कुछ फ़ाइलों का उत्पादन करने के लिए काम कर रही है, हालांकि, इससे कोई फर्क नहीं पड़ता।

19

nohupकमांड का उपयोग करें । बस इसे अपनी कमांड के लिए उपसर्ग करें और यह उन्हें निष्क्रिय कर देगा ताकि जब आप लॉग ऑफ करें / अपना सत्र समाप्त करें तो वे बंद न हों। डिफ़ॉल्ट रूप से मानक आउटपुट nohup.out नामक फ़ाइल में होगा। nohup(1)अधिक जानकारी के लिए मैनुअल पेज की जाँच करें ।


प्रक्रिया चल रही है, क्या यह उस प्रक्रिया के लिए काम कर रहा है? मैं पूछ रहा हूं क्योंकि यह प्रक्रिया बीच में है और मैं इसे फिर से शुरू नहीं करना चाहता हूं?

बहुत देर हो चुकी है ... कम से कम, सामान्य ऑपरेशन के लिए। यह जानकर पूरी तरह से आश्चर्य नहीं होगा कि यदि आप एक डिबगर को प्रक्रिया में संलग्न करते हैं, और फिर इसे सिस्टम कॉल के उपयुक्त सेट के साथ ट्विक किया जाता है, तो शायद आप इसे पृष्ठभूमि में रख सकते हैं। लेकिन यह नहीं है कि क्या सिफारिश की जा सकती है - मैं परेशान नहीं होगा, उदाहरण के लिए, और मुझे कम से कम कुछ विचार है जो इसमें शामिल हो सकते हैं। आपके पास अभी दो विकल्प हैं ... या तो तब तक जुड़े रहें, जब तक यह समाप्त नहीं हो जाता है, या वर्तमान प्रक्रिया को रोक नहीं देता है, और nohup का उपयोग करके एक नया पुनः आरंभ करता है।
जोनाथन लेफ्लर

1
यदि आप बैश (और मुझे लगता है कि zsh) का उपयोग कर रहे हैं, तो आप टॉम एंडरसन के समाधान और disownप्रक्रिया का उपयोग कर सकते हैं ताकि आपके डिस्कनेक्ट होने पर भी यह चलता रहे।
नौफाल इब्राहिम

युप - डिसऑन को पहले से चल रही नौकरी के लिए जाने का रास्ता दिखता है। यह उल्लेखनीय है क्योंकि शेल ने काम शुरू किया है जो आवश्यक गुणों में हेरफेर कर सकता है।
जोनाथन लेफ़लर

5

के साथ प्रक्रिया शुरू करें nohup "processname" &। आप इसे screenया के साथ अलग भी कर सकते हैं tmux


3

उपरोक्त समाधान काफी अच्छी तरह से वर्णित हैं, हालांकि, उनमें से किसी ने भी मेरे लिए काम नहीं किया, मैंने इसके लिए भी पुष्ट विन्यास को संपादित किया:

टीसीपी रखवाली सक्षम करें (SO_KEEPALIVE विकल्प)

मैंने इसे कहीं और नहीं देखा था, और इसे केवल परीक्षण और त्रुटि के द्वारा पाया।


1

Ctrl + z वर्तमान प्रक्रिया को पृष्ठभूमि में भेजें।

साथ ही, आप पृष्ठभूमि में चलाने के लिए अपने कमांड के अंत में जोड़ सकते हैं


4
आम तौर पर, नियंत्रण-जेड प्रक्रिया को निलंबित एनीमेशन की स्थिति में डाल देता है; bg कमांड इसे बैकग्राउंड में डालता है। हालाँकि, यह प्रक्रिया को टर्मिनल से जोड़े रखता है, जबकि नोह ने इसे टर्मिनल से अलग कर दिया है और इसलिए पोटीन को डिस्कनेक्ट करने की अनुमति देता है और डिस्कनेक्शन से बचने की प्रक्रिया करता है।
जोनाथन लेफ्लर

मैंने पाया कि बैकग्राउंड के साथ बैकग्राउंड काम करने के लिए '&' का उपयोग करना, लेकिन जब मैं किसी शेल से सीधे ssh का उपयोग करके कनेक्ट करता हूं, यदि मैं कंसीलर को बंद करता हूं, तो बैकग्राउंड प्रोसेस को मार दिया जाता है। कोई विचार क्यों?
जरदोज़ो

0

यदि आप चाहते हैं कि प्रोग्राम हमेशा पृष्ठभूमि में या अक्सर चलने वाली प्रक्रिया में निहित हो, तो आप इसे कंट्रोलिंग टर्मिनल से अलग करने के लिए कोड कर सकते हैं (इस तरह के व्यवहार को एक विकल्प ध्वज के माध्यम से चलाया जा सकता है) और पृष्ठभूमि में चलाएं।

यह दीर्घकालिक समाधान है, निश्चित रूप से, वर्तमान में चल रही प्रक्रिया के लिए नहीं।


0

आप &लिंक के बाद उपयोग कर सकते हैं ।

उदाहरण:

[localhost ~ ]# wget http://www.link.com/download/download.zip &

प्रश्न लिंक के बारे में नहीं था, क्या आपका मतलब &कमांड लाइन के बाद कोई संकेत जोड़ना है ?
डैनी

0

पोटीन खिड़की बंद करने के बाद वेबलॉग कैसे चालू रखें:

सरल कदम: पोटीन के माध्यम से लॉगिन के बाद नीचे दिए गए चरणों का पालन करें:

  1. उस सर्वर पर निर्देशिका पर जाएं जहां startWebLogic.shकमांड स्थित है।
  2. कमांड टाइप करें screenऔर प्रेस करें Enter(एक नई स्क्रीन खुलेगी)।
  3. नई स्क्रीन में अपना रन कमांड टाइप करें ./startWebLogic.sh
  4. प्रेस Ctrl+ aफिर दबाएं d(बिना पकड़े Ctrl); आप पिछली स्क्रीन पर वापस आ जाएंगे।
  5. जब आप अपने सर्वर लॉग स्क्रीन पर लौटना चाहते हैं, तो कमांड टाइप करें screen -r

0

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

$ npm install pm2 -g
$ cd yourappdirectory

"PM2 एक अंतर्निहित लोड बैलेंसर के साथ Node.js अनुप्रयोगों के लिए एक उत्पादन प्रक्रिया प्रबंधक है। यह आपको अनुप्रयोगों को हमेशा के लिए जीवित रखने, डाउनटाइम के बिना उन्हें फिर से लोड करने और सामान्य सिस्टम व्यवस्थापक कार्यों को सुविधाजनक बनाने की अनुमति देता है।

उत्पादन मोड में आवेदन शुरू करना इतना आसान है: "

$ pm2 start yourappname.js

"सहेजें और फिर फ्रीज कमांड का उपयोग करके आप रिबूट पर ऑटोस्टार्ट करने के लिए प्रक्रियाओं को सक्षम करते हैं"

$ pm2 save
$ pm2 freeze

इसकी निगरानी के लिए

$ pm2 monit

और पुनः आरंभ करता है

$ pm2 restart yourappname

सीधे लॉगिंग जानकारी के लिए भी

$ pm2 logs

अब मैं आसानी से अपने डिगियलोसियन ब्राउज़र विंडो (जो मैं ऊपर स्क्रॉल नहीं कर सकता था) का उपयोग करने के बजाय दो पोटीन विंडो चला सकता हूं; अधिक जानकारी के लिए मुख्य github देखें

https://github.com/Unitech/pm2

यह आश्चर्यजनक है।


क्या आप थोड़ा और समझा सकते हैं कि pm2 क्या है और आपके द्वारा दिखाए जाने वाले आदेश क्या हैं? कृपया टिप्पणियों में प्रतिक्रिया न दें;  इसे स्पष्ट और अधिक पूर्ण बनाने के लिए अपना उत्तर संपादित करें।
जी-मैन ने

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