Byobu स्क्रीन सत्र से कनेक्ट करें और कमांड निष्पादित करें?


9

एक स्क्रिप्ट में मैं निर्माण कर रहा हूं, मैं प्रयोग कर रहा हूं कि जितना संभव हो उतना स्वचालित कैसे करें। अधिक दिलचस्प चुनौतियों में से एक बायोबू स्क्रीन सत्र से जुड़ना और एक कमांड निष्पादित करना है।

इसलिए मैंने स्पष्ट स्थान पर शुरू किया, यह देखते हुए कि कितने स्क्रीन सत्र हैं (गेम में 3 विंडो हैं byobu और lordquackstar में 2 हैं। उपयोगकर्ता अलग-अलग पोटीन उदाहरणों में हैं)

game@quackgame:~$ screen -ls
There is a screen on:
        2019.byobu      (01/05/2011 05:10:04 PM)        (Attached)
1 Socket in /var/run/screen/S-game.

केवल एक ही है, इसलिए मैंने सिस्टम के लिए जाँच की

lordquackstar@quackgame:/home/game$ sudo ls -lAR /var/run/screen/
/var/run/screen/:
total 0
drwx------ 2 game          users         100 2011-01-06 09:18 S-game
drwx------ 2 lordquackstar lordquackstar 100 2011-01-06 09:17 S-lordquackstar

/var/run/screen/S-game:
total 4
prwx------ 1 game users 0 2011-01-08 07:55 2019.byobu
-rw------- 1 game users 0 2011-01-06 09:18 byobu-exchange
-rw-r--r-- 1 game users 3 2011-01-08 07:32 byobu.updates-available

/var/run/screen/S-lordquackstar:
total 4
prwx------ 1 lordquackstar lordquackstar 0 2011-01-08 07:42 1169.byobu
-rw------- 1 lordquackstar lordquackstar 0 2011-01-06 09:17 byobu-exchange
-rw-r--r-- 1 lordquackstar lordquackstar 3 2011-01-08 07:35 byobu.updates-available

फिर भी कोई मल्टीपल स्क्रीन नहीं

तो मेरे सवाल के लिए: मैं एक स्क्रिप्ट से बायोबू में एक खिड़की से कैसे जुड़ सकता हूं?


थोड़ा संबंधित नोट पर, एक बार जब मैं इसे बैश स्क्रिप्ट से जोड़ता हूं, तो क्या इसे कमांड भेजने का कोई तरीका है?


ऐसा लगता है कि प्रत्येक उपयोगकर्ता के पास एक एकल स्क्रीन सत्र है। मैं बायोबू से परिचित नहीं हूं, आपको क्यों लगता है कि पांच स्क्रीन सत्र हैं?
गिलेस एसओ- बुराई को रोकना '

@ गिल्स अधिक शोध में पाया गया कि प्रत्येक उपयोगकर्ता के लिए केवल एक स्क्रीन सत्र है। मैंने सोचा था कि उनके जहां से अधिक htopस्क्रीन प्रक्रियाओं को दिखाया
TheLQ

जवाबों:


7

आप विंडो सहित सीधे पहले से अलग byobu/ screenसत्र से जुड़ सकते हैं:

byobu -r -p2

विंडो 2 (या एक नाम दिया गया) में रीटेट करेगा।

-Xbyobu/ screenसत्र के लिए कोई भी आदेश भेज सकते हैं और -pस्विच के साथ भी काम कर सकते हैं ।

byobu -p2 -X stuff "uname -a $(echo -ne '\r')"

यह uname -aदूसरी (तीसरी वास्तव में) बायोबू विंडो को भेजेगा, echoअंत में एक गाड़ी रिटर्न भेजता है ताकि कमांड निष्पादित हो जाए।


आप बस सामान के लिए स्ट्रिंग के अंत में एक नई रेखा शामिल कर सकते हैं।
गिल्स एसओ-

Whats "सामान"? इसे हटाने से बायोबु में त्रुटि मिलती है "-X अज्ञात कमांड 'uanme -a'
TheLQ

यह वही करता है जो इसे कहता है, यह सत्र uname -aमें (इस मामले में ) कमांड को "सामान" करता है byobu
wag

आह, वहाँ कनेक्शन नहीं बनाया। वैसे भी, मदद के लिए धन्यवाद, यह पूरी तरह से काम करता है!
२०:२५ बजे एलक्यू

सामान कमांड केवल GNU स्क्रीन के साथ काम करता है, tmux के साथ, जो कि डिफ़ॉल्ट रूप से हाल ही में लगता है।
फिल रिकेट्स

7

आप इसे संलग्न किए बिना किसी विशेष स्क्रीन सत्र के किसी विशेष स्क्रीन विंडो को एक कमांड भेज सकते हैं।

screen -S sessionname -p windowname -X screencommand

सत्र का नाम -Sस्क्रीन या sessionnameकमांड शुरू करते समय विकल्प के साथ सेट किया गया है ; डिफ़ॉल्ट रूप से यह byobuबायोबू के साथ है। आप स्क्रीन PID का उपयोग इसके बाद भी कर सकते हैं -S। आप titleकमांड के साथ एक विंडो का नाम सेट कर सकते हैं । आप विंडो नंबर का भी उपयोग कर सकते हैं।

screen -S byobu -p 1 -X stuff 'ls
'

मेरे लिए यह तब काम करता है जब मैं कोई स्ट्रिंग नहीं जगह के साथ सामान, लेकिन जाहिरा तौर पर कुछ भी नहीं करता है। कोई विचार?
फ्रांस्वा ब्यूसोइल

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