ฉันจะบังคับให้แยกหน้าจอออกจากเซสชัน SSH อื่นได้อย่างไร


158

ฉันมีหน้าจอทำงานภายในเซสชัน SSH เทอร์มินัลเย็น หลังจากรีสตาร์ทเทอร์มินัลเซสชันหน้าจอนั้นยังคงคิดว่ามันถูกแนบ อาจจะเป็น บางทีฉันไม่รู้จริงๆว่ามันหมายถึงอะไร

ฉันต้องการแนบเซสชันของหน้าจอนั้นจากการเข้าสู่ระบบ SSH ใหม่ ฉันไม่ต้องการฆ่าเซสชันของหน้าจอนั้นเนื่องจากมีสิ่งสำคัญเกิดขึ้นที่นั่น :)

ตัวเลือกที่ฉันคิดว่าฉันมี (ไม่มีที่ฉันรู้วิธีแก้):

  • ฉันจะแยกเซสชันหน้าจอนั้นออกได้อย่างไร
  • ฉันจะฆ่าเซสชัน SSH ที่เซสชันหน้าจอนั้นเชื่อมต่อได้อย่างไร

คำตอบ:


252

โฮเซ่ตอบแล้วscreen -d -rควรทำเคล็ดลับ นี่คือการรวมกันของสองคำสั่งที่นำมาจากหน้าคน

screen -dแยกเซสชั่นหน้าจอที่ทำงานอยู่แล้วและscreen -rแนบเซสชั่นที่มีอยู่อีกครั้ง โดยการเรียกใช้screen -d -rคุณบังคับให้หน้าจอแยกออกแล้วดำเนินการเซสชันต่อ

ถ้าคุณใช้ทุน-D -RRฉันอ้างหน้าคนเพราะมันดีเกินกว่าจะผ่านไปได้

แนบที่นี่และตอนนี้ ไม่ว่าจะทำอะไรก็ตามแค่ทำ

หมายเหตุ: คุณควรตรวจสอบสถานะเซสชันของคุณเสมอด้วย "screen -list"


3
คุณยังสามารถscreen -xพิมพ์ได้เร็วกว่า แต่ไม่เทียบเท่าทั้งหมด มันจะแนบเซสชั่นครั้งที่สองโดยไม่ต้องถอดก่อนส่งผลให้ในโหมดการแสดงผลหลาย
jlh

10
จำ "หมอหน้าจอ"; screen -Dr
user5359531


6

คำตอบสั้น ๆ

  1. ใส่กลับเข้าไปใหม่โดยไม่กดปุ่มอื่น ๆ : screen -x
  2. รับรายการจอภาพ: ^A *เลือกรายการที่ต้องการตัดการเชื่อมต่อกดd


คำตอบที่อธิบาย

พื้นหลัง:เมื่อฉันกำลังมองหาวิธีการแก้ปัญหาที่มีคำอธิบายปัญหาที่เหมือนกันฉันได้คำตอบนี้เสมอ ฉันต้องการที่จะให้ทางออกที่เหมาะสมมากขึ้น (ตัวอย่างเช่น: หน้าจอที่แนบมาอื่นมีขนาดแตกต่างกันและฉันไม่สามารถปรับขนาดได้ในเทอร์มินัลของฉัน)

หมายเหตุ: PREFIXโดยปกติคือ^A=ctrl+a

หมายเหตุ: จอแสดงผลก็อาจจะเรียกว่า:

  • "user front-end" (ในatคู่มือคำสั่งในหน้าจอ)
  • "ลูกค้า" (คำศัพท์ tmux ซึ่งฟังก์ชันนี้อยู่detach-client)
  • "terminal" (ในขณะที่เราเรียกหน้าต่างในส่วนต่อประสานผู้ใช้ของเรา) / ขึ้นอยู่กับ

1. ติดตั้งซ้ำเซสชัน :screen -x

-xแนบไปกับเซสชันที่ไม่ถูกแยกหน้าจอโดยไม่ต้องถอดออก

2. รายการที่แสดงของเซสชั่นนี้:PREFIX *

PREFIX :displaysมันเป็นกุญแจสำคัญเริ่มต้นที่มีผลผูกพันสำหรับ: ดำเนินการภายในหน้าจอระบุจอแสดงผลอื่นที่เราต้องการยกเลิกการเชื่อมต่อ (เช่นขนาดที่เล็กกว่า) ( จอแสดงผลปัจจุบันของคุณจะแสดงเป็นสี / ตัวหนาที่สว่างกว่าเมื่อไม่ได้เลือก )

term-type   size         user interface           window       Perms
---------- ------- ---------- ----------------- ----------     -----
 screen     240x60         you@/dev/pts/2      nb  0(zsh)        rwx
 screen      78x40         you@/dev/pts/0      nb  0(zsh)        rwx

ใช้ลูกศร เลือกการแสดงผลเป้าหมายกดd ถ้าไม่มีอะไรเกิดขึ้นคุณพยายามแยกจอแสดงผลของคุณเองและหน้าจอจะไม่แยกออก หากเป็นอีกรายการหนึ่งภายในสองหรือสองรายการจะหายไป

กดENTERเพื่อออกจากรายการ

ทางเลือก:เพื่อให้เนื้อหาพอดีกับหน้าจอของคุณreflow : PREFIX F(ตัวพิมพ์ใหญ่ F)

ตัดตอนมาจากหน้าคนของหน้าจอ:

แสดง

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

  • mouseclickย้ายไปที่บรรทัดที่เลือก ใช้งานได้เมื่อตั้งค่า "mousetrack" เป็นเปิด
  • space รีเฟรชรายการ
  • d ถอดจอแสดงผลนั้นออก
  • D กำลังไฟที่แสดง
  • C-g, enterหรือescapeออกจากรายการ

-2

screen -d -rลองคำสั่ง สิ่งนี้ได้ผลสำหรับฉัน .. !


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