2010-12-14 5 views
5

"-d -m" से शुरू होने वाला कोई भी सत्र "-X सामान [...]" आदेश स्वीकार नहीं करता है जब तक कि मैं कम से कम एक बार स्क्रीन से जुड़ा हुआ न हो। कोई त्रुटि संदेश नहीं है, आदेश केवल माध्यम से नहीं मिलता है।मैं स्टार्ट-इन-डिटेक्टेड स्क्रीन पर सामान कमांड कैसे भेज सकता हूं?

समस्या यह है कि मैं एक क्रॉन नौकरी से सत्र शुरू करता हूं और क्रॉन के भीतर से स्क्रीन से अटैच करने में असमर्थ हूं।

कदम दोहराने के लिए

$ screen -m -d -S mydaemon bash 
$ screen -S mydaemon -X stuff "`printf "exit\\r"`" 
$ screen -ls 
     32456.mydaemon (Detached) 
$ screen -r -S mydaemon 
$ ^a d 
$ screen -S mydaemon -X stuff "`printf "exit\\r"`" 
$ screen -ls 
No Sockets found in /var/run/screen/S-user 

^एक घ Ctrl दबाए + एक तो दबाने घ इंगित करता है।

संस्करण

CentOS release 5.5 (Final) 
Screen version 4.00.03 (FAU) 23-Oct-06 

उत्तर

8

संपादित करें: इस सवाल का सर्वश्रेष्ठ उत्तर this other SO answer है। अगर मैं इसी तरह की समस्या के समाधान को प्रेरित करता हूं, तो मैं यहां अपने क्लेजगी समाधान को छोड़ देता हूं।


एक संभावित समाधान, एक दूसरे का उपयोग करने, पहले से ही चल रहा है और अलग स्क्रीन सत्र स्क्रीन सत्र शुरू करने के लिए जो आप संलग्न मोड में "सामान" कमांड भेजना चाहते हैं, और फिर उस स्क्रीन सत्र एक अलग भेज है आदेश और फिर सामान कमांड।

$ screen -dmS spawner 
$ screen -S spawner -X screen screen -dR mydaemon 
$ sleep 1 # may be necessary 
$ screen -S mydaemon -X detach 
$ screen -S mydaemon -X stuff "whatever" 

(नोट:! दोगुनी "स्क्रीन" नहीं कोई गलती है) आप अभी भी एक unstuffable स्क्रीन सत्र (spawner) के साथ छोड़ दिया जाता है लेकिन आप हमेशा सिर्फ "मारने उपयोग कर सकते हैं संसाधनों लेता महत्वपूर्ण हैं अवधि ... "या उसके जैसे लोग इसे समाप्त (या

$ screen -dmS spawner bash -c "sleep 60" 

या इसी तरह की तरह कुछ के साथ इसे शुरू करने से यह स्वतः ही समय की एक निश्चित राशि के बाद बाहर निकलने के लिए) के लिए।

+0

बहुत बहुत धन्यवाद, आप बहुत ही अच्छे हैं! –

+1

प्रोत्साहन के लिए धन्यवाद। मैं भूल गया कि मैंने खोजा उस दौड़ की स्थिति को रोकने के लिए, स्क्रीन सत्र बनाने और -एक्स के माध्यम से इसके अलगाव के बाद मुझे एक छोटी सी नींद जोड़नी पड़ी। जवाब को प्रतिबिंबित करने के लिए संपादित किया गया है। –

0

आप के बजाय tmux का उपयोग कर विचार किया है? यह गैर-संवादात्मक कार्यों के लिए अधिक उपयुक्त है।

+0

मैं वर्तमान में tmux स्थापित नहीं है, लेकिन मैं इस पर गौर कर सकते हैं। वहाँ एक गाइड है या कर सकते हैं आप जो चाहते हैं उसके लिए आप एक उदाहरण प्रदान करते हैं? –

+0

'मैन tmux' बहुत कुछ सबकुछ कवर करता है, लेकिन यह आपके इच्छित चीज़ों के समान होना चाहिए: http://blog.hawkhost.com/2010/07/02/tmux-% E2% 80% 93-टर्मिनल-मल्टीप्लेक्सर-भाग -2/# tmux-shell-scripting –

-1

.screenrc फ़ाइल का उपयोग करके, आप चीजों को शुरू करने के लिए सेट कर सकते हैं;

screen -t <title> <window position> <command> 

इसलिए, यदि आप खिड़की 7 में top शुरू करने के लिए चाहता था, तुम क्या चाहते हैं

screen -t window7top 7 top 
+0

आपकी प्रतिक्रिया लागू नहीं है। –

0

रॉन कामिंस्की के लिए धन्यवाद।

मैं 'spawner' स्क्रीन

$ screen -dmS spawner 
    $ screen -S spawner -X screen screen -dR mydaemon 
    $ sleep 1 # may be necessary 
    $ screen -S mydaemon -X detach 

को मारने और लाइन

$ screen -S mydaemon -X screen screen -S spawner -dR 
    $ sleep 1 # may be necessary 
    $ screen -S spawner -X detach 
    $ screen -S spawner -X kill 
+0

वैसे भी, मैं अन्य guy'answer पर टिप्पणी नहीं जोड़ सकता। मेरे साथ क्या होता है :( –

0

स्क्रीन -d मी/bin/bash "परीक्षण नीचे जोड़ने के लिए एक और रास्ता मिल गया।श "

स्क्रीन (अलग) (मोबाइल) (शेल)" क्या निष्पादित करने के लिए "

$ screen -d -m /bin/bash "test.sh" 
$ screen -li 
There is a screen on: 
     8540..Satelite (10/17/2013 04:53:22 AM)  (Detached) 
1 Socket in /var/run/screen/S-matt. 
संबंधित मुद्दे