ฉันต้องการเปิดแอปพลิเคชั่นภายในเซสชันหน้าจอ แต่มาจากสคริปต์
หากไม่มีสคริปต์ฉันก็แค่เปิดหน้าจอแล้วเปิด N windows ด้วย crtl-ac และรันโปรแกรมในแต่ละหน้าต่าง
ฉันพยายามต่อไปนี้
screen -d -m -S test
screen -S test -X exec tail -f /var/log/messages
screen -S test -X screen
screen -S test -X exec tail -f /var/log/xinetd.log
แต่เมื่อฉันแนบเซสชันหางไม่ทำงาน ถ้าฉันแนบเซสชันหลังจากนั้นscreen -d -m -S startup
และเรียกใช้screen -S startup -X exec tail -f /var/log/messages
จากเทอร์มินัลอื่นมันใช้งานได้
ฉันพลาดอะไรไปหรือเปล่า?
แก้ไขหลังจากตอบ AlexD:
วิธีแก้ปัญหาการทำงานครึ่งหนึ่งคือ
screen -d -m -S test tail -f /var/log/messages
screen -S test -X screen tail -f /var/log/xinetd.log
คำสั่งหน้าจอ Chaining (หนึ่งหลัง -X) กับคำสั่งทำงานในขณะที่ exec ไม่น่าจะเป็นเพราะ exec คาดว่าหน้าต่างปัจจุบันจะถูกกำหนดในขณะที่ไม่มีหนึ่งในปัจจุบันเมื่อหน้าจอจะถูกถอดออก ขอบคุณAlexDสำหรับเคล็ดลับนี้
แต่มีผลข้างเคียงที่แปลกคือเมื่อโปรแกรมหยุด (ถ้าคุณแนบเซสชันของหน้าจอและ crtl-c tail หรือ kill tail) หน้าต่างหน้าจอจะปิดลง
ดังนั้นพฤติกรรมจึงไม่เหมือนกับ Crtl-A c และเรียกใช้คำสั่ง
ผลข้างเคียงอื่นคือคุณไม่สามารถโยงคำสั่ง 2 ได้
screen
มักจะสิ้นสุดลงเมื่อคำสั่งด้วยซึ่งจะได้รับการเปิดตัวปลาย - มันเป็นคุณลักษณะปกติของเครื่องมือ :) ..so ถ้าคุณทำงานscreen top
เมื่อคุณเลิกtop
,screen
จะเลิกเกินไป