Tcsh के साथ बाद में तथ्य दूरस्थ nohup


11

मेरे पास एक xterm में एक tcsh उदाहरण है जो एक दीर्घकालिक (सप्ताह?) प्रक्रिया चला रहा है। Xvnc सर्वर जो चल रहा है वह मातम में चला गया; यह 100% सीपीयू का उपभोग कर रहा है और अनुत्तरदायी है। (यह एक ज्ञात बग है और मुझे पता है कि यह अप्राप्य है।)

दीर्घकालिक प्रक्रिया वर्तमान में स्टडआउट पर अवरुद्ध हो रही है।

वहाँ किसी भी तरह से मैं एक अंतर्निहित प्रक्रिया को मार सकता है - tsh, xterm, जो कुछ भी - और उस दीर्घकालिक प्रक्रिया को चालू रखें?

(कृपया, इसके बारे में कोई जवाब नहीं screen। मुझे पता है। यह मेरी प्रक्रिया नहीं है; यह एक उपयोगकर्ता है। वे नहीं सीखेंगे।)

जवाबों:


17

यह पोस्ट मदद कर सकता है। सिफारिश है:

  1. पृष्ठभूमि की प्रक्रिया (Ctrl-Z के साथ, फिर बीजी )
  2. चलाने अस्वीकार -h% [jobid] (संभावना एक bash-वाद, तो आप tcsh के लिए अनुवाद करने के लिए होगा)

बुरी खबर यह है , ज़ाहिर है, वह यह है कि bg ही खोल प्रक्रिया में चल रहा है में किया जा करने की आवश्यकता होगी ... यह पहले से ही backgrounded हो सकता है ... लेकिन।

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

हम्म। संभावित खुशखबरी - tcsh अपने आप ख़राब हो गया

यदि tshsh असामान्य रूप से बाहर निकलता है, तो यह बाहर निकलने पर स्वचालित रूप से पृष्ठभूमि में चल रही नौकरियों को भंग कर देता है।

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

दुर्भाग्य से, यह स्क्रीन नहीं है, इसलिए कोई वास्तविक पुन: कनेक्ट नहीं हो रहा है। आप इसे gdb के साथ नकली कर सकते हैं (फिर, पहले लिंक से):

[...] कुछ गंदे हैक के साथ, एक प्रक्रिया 'stdout / stderr / स्टड फिर से खोलना असंभव नहीं है।

तो आप अभी भी एक रिक्त स्क्रीन विंडो बना सकते हैं (उदाहरण के लिए जो नींद को चलाता है)।

और फिर प्रक्रिया के साथ संलग्न करने के लिए उदाहरण के लिए gdb का उपयोग करें, कुछ कॉल करें (0)
कॉल क्लोज़ (1)
कॉल क्लोज़ (2)
कॉल ओपन ("/ dev / pts / xx", ...)
कॉल डूप (0)
कॉल डुप (0)
अलग

प्रक्रिया का आउटपुट स्क्रीन पर जाएगा। यह उस स्क्रीन टर्मिनल से जुड़ा नहीं होगा, इसलिए उदाहरण के लिए [एसआईसी] "स्लीप" कमांड को मार देगा, न कि प्रक्रिया, लेकिन यह ओपी के लिए पर्याप्त हो सकता है।

मुझे आश्चर्य है कि अगर उस प्रक्रिया में "कॉल डुप (1)" और "कॉल डुप (2)" भी नहीं होना चाहिए ...


हाँ, यह एक अग्रभूमि प्रक्रिया है, इसलिए मुझे लगता है कि मैं खराब हूँ।
wufulk

हाँ। लेकिन जैसा आपने कहा, यह आपकी प्रक्रिया नहीं, आपकी गलती नहीं है। खेद है कि आप गड़बड़ के साथ अटक जाते हैं, यद्यपि।
क्वैक्ट ऑक्टोटे ऑक्ट

2
इसने पूरी तरह से मेरी गांड को बचा लिया। मुझे शुरू में पोस्ट की गई उसी समस्या का सामना करना पड़ा, जो यह था कि एक्स सर्वर (और, मुझे लगता है, बीच में xterm) wedged होने पर प्रक्रिया STDOUT पर रोक रही थी। यह पता चला है कि मुझे वास्तव में करीबी STDOUT को छोड़कर कुछ भी करने की आवश्यकता नहीं थी। वह उत्पादन अप्रासंगिक था; असली डेटा कहीं लॉग फ़ाइल में है। इसलिए मैं जीडीबी के साथ संलग्न करने में सक्षम था, "कॉल क्लोज़ (1)" और फिर "कॉन" चलाएं और यह फिर से आगे बढ़ रहा है। बहुत बहुत धन्यवाद!
wufulk

हुह! दिलचस्प। कि सब कुछ उघाड़ो? weirdness। खुशी है कि यह मदद की!
क्वेक

2
यह इंगित करने के लायक हो सकता है कि "Ctrl-Z" को अग्रभूमि प्रक्रिया में भेजना और उसके पृष्ठ पर SIGSTOP भेजना एक ही बात है। (SIGCONT इस प्रक्रिया को फिर से शुरू करता है।) मुझे नहीं पता कि यह उसी स्थिति में दूसरों के लिए मददगार होगा या नहीं, लेकिन, मेरे त्वरित परीक्षण में, SIGSTOP को SIGCONT डुप्लिकेट "Ctrl-Z" के साथ भेजने के बाद bg
17

3

ये प्रश्न क्रायोपिड नामक एक कार्यक्रम का उल्लेख करते हैं जो आपकी मदद कर सकता है। हालाँकि मुझे इसके साथ कोई अनुभव नहीं है।

मेजबानों के बीच एक प्रक्रिया चलती है

X सत्रों के बीच xterms चल रहा है

Nohup और स्क्रीन एक प्रक्रिया


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