ติดตั้งซ้ำหรือสร้างเซสชันหน้าจอที่ตั้งชื่อหรือไม่ (หรือเซสชันหน้าจอถาวร)


27

โดยทั่วไปฉันมีเซสชั่นหน้าจอระยะไกลซึ่งฉันต้องการกลับไปที่อัตโนมัติโดยอัตโนมัติ .. ขณะนี้ฉันกำลังทำสิ่งนี้โดยใช้คำสั่งต่อไปนี้ (เป็นที่คั่นหน้า iTerm หรือนามแฝง)

ssh host -t screen -x thesessionname

มันใช้งานได้ดี แต่ถ้าเซสชั่นตายด้วยเหตุผลใดก็ตามฉันต้องการที่จะได้รับการสร้างขึ้นใหม่เมื่อฉันเชื่อมต่อไป -Rธงscreenเป็นเกือบสมบูรณ์แบบ:

ssh host -t screen -R -S thesessionname

.. แต่ถ้ามีการเชื่อมต่อเซสชันแล้วเซสชันที่สองจะถูกสร้างขึ้น ( -Rดูง่ายๆสำหรับเซสชันเดี่ยวที่แยกออกมาครั้งแรกหากไม่พบจะสร้างเซสชันใหม่ขึ้นมา)

มีวิธีในการทำให้-Rค่าสถานะค้นหาเซสชันที่แนบมาด้วยหรือไม่และสร้างใหม่หากthesessionnameไม่มีอยู่เท่านั้น

หากสิ่งนี้ไม่สามารถทำได้อย่างง่ายดายฉันจะสร้างเซสชันหน้าจอใหม่โดยอัตโนมัติเมื่อมันตายได้อย่างไร บางทีสคริปต์ทำงานผ่าน cron ที่ค้นหาเซสชันที่มีชื่อสร้างมันไม่ควรมีอยู่?

คำตอบ:


32

บอกให้หน้าจอพยายามทำสิ่งต่อไปนี้:

-D -R
    Attach here and now. In detail this means: If a session is run-
    ning,  then  reattach.  If necessary detach and logout remotely
    first.  If it was not running create it and  notify  the  user.
    This is the author's favorite.

ดังนั้นรวมทั้งสองเข้าด้วยกันและคุณควรมีวิธีแก้ปัญหาของคุณ ("-DR" เทียบเท่ากับ "-D -R"):

screen -DR <yoursession> 

นอกจากนี้และมีประโยชน์ที่จะรู้ว่าคุณสามารถดูเซสชันการทำงานด้วย:

screen -ls

5
สมบูรณ์แบบscreen -x -R -S mainเป็นสิ่งที่ฉันลงเอยด้วยการใช้งาน
dbr

บางครั้งคุณต้องการใช้sceen -r <yoursession>จะให้ข้อผิดพลาดเมื่อมันถูกแนบไปแล้ว (แทนที่จะสร้างเซสชั่นใหม่)
อันตราย 89

11

ตัวเลือกที่ดีบางอย่าง ก่อนอื่นที่ฉันชอบ:

screen -x -R

ซึ่งจะแนบไปกับเซสชันหน้าจอแรกที่มีอยู่ (การแชร์หากการเชื่อมต่ออื่นเชื่อมต่ออยู่) และหากไม่มีเซสชันหน้าจอเลยให้เริ่มใหม่

screen -d -RR

เอกสารสำหรับการพูดว่า "ติดตั้งเซสชันซ้ำและหากจำเป็นต้องถอดออกหรือสร้างให้ใช้เซสชันแรกหากมีมากกว่าหนึ่งเซสชันให้ใช้งาน" โดยทั่วไป double-R ทำให้มองหาเซสชั่นแรกที่แนบมา

screen -D -RR

"แนบที่นี่และตอนนี้สิ่งที่หมายความว่าเพียงแค่ทำมัน" จะแยกและออกจากระบบจากเซสชันอื่นที่แนบมาจากระยะไกลและแนบไปกับเซสชันแรกที่ทำได้ โดยพื้นฐานแล้วทำสิ่งที่จำเป็นต้องทำเพื่อแนบกับเซสชันที่มีอยู่และสร้างรายการใหม่หากไม่มีสิ่งนั้น

สิ่งแรกสุด (-x -R) เป็นอย่างน้อยน่าจะทำให้เกิดปัญหา (จะไม่แยกการเชื่อมต่ออื่น ๆ ของคุณ) แต่เพียงแค่ธรรมดาเสมอแนบกับบางสิ่งบางอย่างถ้ามีอะไรที่จะแนบและสร้างบางสิ่งบางอย่างถ้าไม่มีอะไรที่จะแนบ


1
เหล่านี้เป็นสิ่งที่ดีทั้งหมด / ตัวเลือกที่มีประโยชน์ แต่ก็ไม่มีใครตอบคำถามเดิมซึ่งจะ (อีกครั้ง) เชื่อมต่อกับเซสชั่นโดยใช้ชื่อ
แดเนียล

5

ฉันใช้

screen -dRRS sessname

ฉันไม่ต้องการเข้าสู่ระบบทั้งหมดของฉันบนเปลือกอื่น ๆ ลดลงเช่นไม่และแน่นอนฉันไม่ต้องการโหมดหลายแนบ-D-x

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