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


मैं एसएसएच पर लंबे समय से चल रहे डेटा माइग्रेशन स्क्रिप्ट्स के कुछ टेस्ट-रन कर रहा हूं। मान लें कि मैं 4 बजे के आसपास एक स्क्रिप्ट चलाने शुरू कर देता हूं; अब, 6 बजे चारों ओर घूमता है, और मैं इसे सब कुछ करने के लिए खुद को शाप नहीं दे रहा हूं screen

क्या "पीछे हटने" का कोई तरीका है nohup एक प्रक्रिया, या क्या मुझे पूरी रात अपने कंप्यूटर को ऑनलाइन छोड़ने की ज़रूरत है? अगर संलग्न करना संभव नहीं है screen सेवा मेरे/nohup एक प्रक्रिया जो मैंने पहले ही शुरू कर दी है, तो क्यों? माता-पिता / बच्चे की प्रक्रिया कैसे बातचीत करती है इसके साथ कुछ करना है? (मैं एक "नहीं" उत्तर स्वीकार नहीं करूंगा जो कम से कम 'क्यों' के सवाल को संबोधित नहीं करता - क्षमा करें;))


247
2018-06-11 22:53


मूल


बस के बारे में एक दिलचस्प ब्लॉग पोस्ट देखा disown। blogs.oracle.com/ksplice/entry/disown_zombie_children_and_the - ojrac


जवाब:


यदि आप बैश का उपयोग कर रहे हैं, तो आप दौड़ सकते हैं disown -h job

अस्वीकार करना

disown [-ar] [-h] [jobspec ...]

विकल्पों के बिना, प्रत्येक नौकरियों को सक्रिय नौकरियों की तालिका से निकाल दिया जाता है।   अगर -h विकल्प दिया जाता है, नौकरी   तालिका से हटाया नहीं गया है, लेकिन है   चिह्नित किया गया है कि SIGHUP को भेजा नहीं गया है   नौकरी अगर शेल प्राप्त करता है   उच्छ्वास करो। यदि जॉब्सपेक मौजूद नहीं है, और   न तो -a न -r विकल्प है   आपूर्ति की, वर्तमान नौकरी का उपयोग किया जाता है। अगर   कोई नौकरियों की आपूर्ति नहीं की जाती है, -a   विकल्प सभी को हटाने या चिह्नित करने का मतलब है   नौकरियों; -r बिना विकल्प के   jobspec तर्क ऑपरेशन प्रतिबंधित करता है   नौकरी चलाने के लिए।


200
2018-06-11 23:03



बहुत बढ़िया; मैं उम्मीद कर रहा था कि ऐसा कुछ चालू हो जाएगा। - ojrac
जीवन अनुचित हो सकता है। gharper और मैं इसे एक ही समय में पोस्ट कर रहे थे :) - serverhorror
आप मेरे हीरो हैं - Thomas Dignan
अस्वीकार करने के लिए विशिष्ट नहीं है। यह zsh, ksh93 में भी है ... - Phil P
मैंने पाया कि आपको वास्तव में उपयोग करना है disown %1 यदि 1 जॉब्सपेक है, तो एफजी या बीजी के विपरीत जहां आप अभी उपयोग करते हैं bg 1  serverwatch.com/tutorials/article.php/3935306/... - mltsy


उपयोग reptyr

रीडमे से:

reptyr - A tool for "re-ptying" programs.
-----------------------------------------

reptyr is a utility for taking an existing running program and
attaching it to a new terminal. Started a long-running process over
ssh, but have to leave and don't want to interrupt it? Just start a
screen, use reptyr to grab it, and then kill the ssh session and head
on home.

USAGE
-----

  reptyr PID

"reptyr PID" will grab the process with id PID and attach it to your
current terminal.

After attaching, the process will take input from and write output to
the new terminal, including ^C and ^Z. (Unfortunately, if you
background it, you will still have to run "bg" or "fg" in the old
terminal. This is likely impossible to fix in a reasonable way without
patching your shell.)

इसके लेखक द्वारा कुछ ब्लॉग पोस्ट:


77
2018-05-22 21:27



मैं अंतर्निहित टूल्स (यानी अस्वीकार) के साथ चिपकने जा रहा हूं, लेकिन यह reptyr के रूप में लचीला नहीं है। +1 - ojrac


एक प्रक्रिया से अपने वर्तमान tty तक एक प्रक्रिया चोरी करने के लिए, आप इस हैक को आजमा सकते हैं:

http://www.ucc.asn.au/~dagobah/things/grab.c

मौजूदा लिनक्स / ग्लिबैक संस्करणों को संकलित करने के लिए इसे कुछ सुधार की आवश्यकता है, लेकिन अभी भी काम करता है।


22
2018-06-12 05:38



असाधारण रूप से शांत। - ojrac


जब कोई प्रक्रिया शुरू होती है, तो STDIN, STDOUT और STDERR से जुड़े होते हैं कुछ कुछ। एक बार आदेश शुरू होने के बाद आम तौर पर आप इसे बदल नहीं सकते हैं। यदि आप वर्णन कर रहे हैं, तो शायद यह एसएसएच सत्र से जुड़ा हुआ है। नोहप बहुत ज्यादा करता है ...

command < /dev/null > nohup.out 2>&1

यही है, एसटीडीआईएन को / dev / null पर सेट करता है, एक फ़ाइल में STDOUT और STDERT को STDERT सेट करता है। स्क्रीन बहुत अधिक परिष्कृत चीजें करता है जिसमें टीटीआई सेट अप करना शामिल है जो स्वयं को निर्देशित करता है।

मैं किसी चलने की प्रक्रिया को पीछे हटाना या स्क्रीनसाइज करने के किसी भी तरीके से नहीं जानता। यदि आप / proc / $ pid / fd से सीडी करते हैं और देखें कि 0, 1 और 2 बिंदु क्या है।

आपके पास अस्वीकार के साथ कुछ भाग्य हो सकता है, लेकिन अगर प्रक्रिया STDIN, STDOUT या STDERR के साथ कुछ भी करने की कोशिश नहीं करती है।


16
2018-06-11 23:04



अच्छी टिप्पणियों के लिए +1। सेंट (डिन | आउट | गलती) समस्या का दूसरा आधा है, और मैं इस बात की सराहना करता हूं कि कहां से शुरू करना है, अगली बार जब मैं इस जाम में हूं। - ojrac
आप वास्तव में इसे अधिकांश यूनिक्स पर बदल सकते हैं। यह एक घृणित हैक है। मुझे यह पसंद है। :) आप क्या करते हैं, डीआरएजी समर्थन जैसे डीआरयूजी समर्थन का उपयोग कर प्रक्रिया से कनेक्ट करें, फिर प्रक्रिया को दोबारा जोड़ने के लिए डुप्ली () को 0,1,2 को दूसरे फाइलहेन्डल से कनेक्ट करने के लिए मजबूर करें। - Zan Lynx
हाँ, आप इसे बदल सकते हैं। प्रक्रिया (SIGSTOP) को रोकना, और फ़ाइल descriptors को fd 0, 1, 2 के लिए संशोधित करना शामिल है। फिर पुनरारंभ करना (SIGCONT)। - Michael Martinez


Cryopid grab.c के लेखक से एक और विकास है जो प्रक्रिया को फिर से शुरू करने के लिए एक फ़ाइल को एक प्रक्रिया को फ्रीज करता है, जिसे आप तब चलाते हैं (स्क्रीन के अंदर)।


12
2018-06-14 18:26



अच्छा! मैंने प्रक्रिया माइग्रेशन के बारे में अपने मास्टर के शोध प्रबंध में क्रॉपीड का उपयोग करने की कोशिश की, लेकिन यह हर बार काम करने में असफल रहा, इससे कोई फर्क नहीं पड़ता कि मैंने क्या किया। अंत में, मुझे लिनक्स के एक प्राचीन संस्करण के साथ डंकेट का उपयोग करना पड़ा। क्या आप शायद क्रॉपीड के विकास में शामिल हैं? मैं देखता हूं कि आपका नाम लेखक के डोमेन के समान है। - Juliano
मैं विकास में शामिल नहीं हूं, मैं सिर्फ विश्वविद्यालय से लेखक को जानता हूं। उसके पास फिलहाल क्रॉपीड को बनाए रखने का समय नहीं है, इसलिए ऐसा लगता है कि कुछ लोगों ने इस पर काम करना शुरू कर दिया है sharesource.org/project/cryopid - TRS-80


मैं आपको केवल स्क्रीन के हिस्से के बिना एक सरल "नहीं" दे सकता हूं, मुझे आपके कारण में दिलचस्पी होगी।

हालांकि आपने कोशिश की है disown (एक बाश निर्मित)

~ $ echo $SHELL
/bin/bash
~ $ type disown
disown is a shell builtin
~ $ help disown
disown: disown [-h] [-ar] [jobspec ...]
     By default, removes each JOBSPEC argument from the table of active jobs.
    If the -h option is given, the job is not removed from the table, but is
    marked so that SIGHUP is not sent to the job if the shell receives a
    SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove all
    jobs from the job table; the -r option means to remove only running jobs.

11
2018-06-11 23:02





सोलारिस / ओपन सोलालिसिस पर नोहुप में एक चलती प्रक्रिया को नो-अप करने के लिए ध्वज है - उदाहरण के लिए, देखें सोलारिस 10 नोहप मैन पेज


9
2018-06-13 00:59