วิธีเรียกใช้คำสั่งที่สองในเซสชันหน้าจอเดียวกัน


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ฉันรู้เรื่องนี้ แต่ฉันอยากจะทำมันจากสคริปต์เริ่มต้น โดยทั่วไปฉันต้องการเริ่ม 2 คำสั่งในหน้าต่างแยกในเซสชั่นหน้าจอเดียวกัน แล้วพบกัน

1
@bob: ดูตัวอย่าง # 3 "นอกจอ" ในคำตอบนี้
user1686

สวัสดี grawity screen -S testen -X 'screen echo "hi"'ไม่ทำงาน

ฉันไม่สามารถใช้วิธี -X เพื่อทำงานได้ Fwiw หน้าจอของฉัน -v บอกว่า "Screen version 4.00.03 (FAU) 23-Oct-06"
Lauri Lehtinen

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. ตอนนี้ตรวจสอบว่าคำสั่งถูก runned ในหน้าต่างแรก

    screen -R mySessionName -p 0
    
  6. ตอนนี้ตรวจสอบว่าคำสั่งถูก runned ในหน้าต่างที่สอง

    screen -R mySessionName -p 1
    

ทดสอบกับหน้าจอ 4.00.03 (CENTOS 6.3 x64)


1

คุณสามารถตั้งค่า. screenrc ทางเลือกผ่านการ-cโต้แย้ง ใน screenrc ใหม่นี้คุณสามารถตั้งค่าหลายคำสั่งให้เริ่มเมื่อหน้าจอเริ่มต้นเซสชัน

ในตอนท้ายของทางเลือก. screenrc นี้ให้ใส่คำสั่งต่อไปนี้:

screen 1 cmd1 args
screen 2 cmd2 args

คุณไม่จำเป็นต้องติดตั้งไฟล์กำหนดค่าอื่นหากคุณวางแผนที่จะเรียกใช้เซสชั่นหน้าจอหนึ่งประเภทเท่านั้นและคำสั่งเริ่มต้นที่รันจะทำงานได้ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.