एक ही स्क्रीन सत्र में दूसरी कमांड कैसे चलाएं


12

मैं इस तरह से स्क्रीन में पहला कमांड शुरू कर रहा हूं:

screen -d -m -S testen -t lalala watch df -h

जो मुझे बैकग्राउंड में एक स्क्रीन सेशन देता है और मैं बाद में फिर से कनेक्ट कर सकता हूं।

मैं उसी स्क्रीन सत्र में एक नई विंडो में दूसरी कमांड कैसे चला सकता हूं?

जवाबों:


11

-Sएक नामित विंडो ( -t) नामित विंडो ( ) के साथ टर्मिनल आकार ( -A) को अलग किए गए मोड ( -d -m) में प्रारंभ करें :

screen -S mySessionName -t myWinName0 -A -d -m

-tउसी स्क्रीन सत्र में एक और नामित विंडो ( ) प्रारंभ करें -S:

screen -S mySessionName -X screen -t myWinName2

सत्र में -X stuff $'cmds'पहले नाम वाली विंडो ( -p) में कुछ कमांड्स ( ) भरें -S:

screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'

कुछ आदेशों ( -X stuff $'cmds') को -pसत्र में दूसरे नामित विंडो ( ) में डालें -S:

screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'

स्क्रीन सत्रों को सूचीबद्ध करें और देखें कि क्या हुआ था:

screen -ls
screen -r mySessionName

नोट: लाइनफीड ( \n) दबाने का अनुकरण करता है Enter। आप सेमीकॉलन का उपयोग अलग-अलग कमांड के लिए भी कर सकते हैं।


आपको "सामान" बिट्स करने की ज़रूरत नहीं है। screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
लोटस

4

अंदर स्क्रीन:

  • Ctrl-A, cएक नई शेल विंडो खोलने के लिए
  • Ctrl-A, :screen newcmdको चलाने के लिएnewcmd

बाहर:

screen -X testen "screen newcmd"

हाय grawity , मैं यह जानता हूँ, लेकिन मैं एक init स्क्रिप्ट से यह करने के लिए करना चाहते हैं। मूल रूप से मैं एक ही स्क्रीन सत्र में अलग खिड़कियों में 2 कमांड शुरू करना चाहता हूं। आप देखें

1
@ उत्तर: उदाहरण # 3, "आउटसाइड स्क्रीन", इस उत्तर में देखें।
user1686

नमस्ते, screen -S testen -X 'screen echo "hi"'काम नहीं करता है।

मैं भी काम करने के लिए -X विधि प्राप्त करने में असमर्थ था। Fwiw, मेरी स्क्रीन -v कहती है "स्क्रीन संस्करण 4.00.03 (एफएयू) 23-अक्टूबर -2016"
लॉरी लेहटिनेन

4

दृष्टिकोण से ऊपर की कोशिश की, लेकिन दूसरी कमान दूसरी खिड़की पर निष्पादित नहीं की। मैंने विंडो नाम के बजाय विंडो नंबर का उपयोग करके उदाहरण को थोड़ा समायोजित किया:

  1. सत्र बनाएँ

    screen -S mySessionName -t 0 -A -d -m
    
  2. दूसरी विंडो बनाएं

    screen -S mySessionName -X screen -t 1
    
  3. पहली विंडो पर कमांड भेजें

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. दूसरी विंडो पर कमांड भेजें

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. अब जांचें कि क्या कमांड को पहले विंडो पर चलाया गया है

    screen -R mySessionName -p 0
    
  6. अब जांचें कि क्या कमांड दूसरी विंडो पर चलाया गया है

    screen -R mySessionName -p 1
    

स्क्रीन 4.00.03 (CENTOS 6.3 x64) के साथ परीक्षण किया गया।


1

आप एक वैकल्पिक .screenrc को -cतर्क के माध्यम से सेटअप कर सकते हैं । इस नए स्क्रीन आर्क में आप स्क्रीन सेशन शुरू होने पर शुरू करने के लिए कई कमांड सेट कर सकते हैं।

इस वैकल्पिक के अंत में .screenrc निम्नलिखित कमांड डालते हैं:

screen 1 cmd1 args
screen 2 cmd2 args

यदि आपको केवल एक प्रकार का स्क्रीन सत्र चलाने की योजना है और डिफ़ॉल्ट कमांड रन हमेशा ठीक हैं, तो आपको वैकल्पिक कॉन्फ़िगरेशन फ़ाइल को सेटअप करने की आवश्यकता नहीं है।

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