วิธีการกู้คืนเซสชันหน้าจอ 'ที่หายไป'


80

ยังไงก็เถอะฉันจัดการเพื่อปิดหน้าต่างหน้าจอโดยไม่ต้องหน้าจอ 'สังเกตเห็น' attachedมันดังนั้นเซสชั่นยังคงสถานะเป็น สิ่งนี้ทำให้ฉันไม่สามารถเชื่อมต่อกับเซสชันนี้ได้อีก ฉันควรทำอย่างไร

me@iupr-serv8:~$ screen -r
There are several suitable screens on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:34 PM)    (Attached)
    24658.pts-19.XXX-serv8  (01/05/2012 07:11:38 PM)    (Detached)
    24509.pts-19.XXX-serv8  (01/05/2012 07:10:00 PM)    (Detached)
    18676.pts-5.XXX-serv8   (01/02/2012 06:55:33 PM)    (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
me@XXX-serv8:~$ screen -r 25028
There is a screen on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:33 PM)    (Attached)
There is no screen to be resumed matching 25028.

[อัพเดต]

ในที่สุดก็ออกมาพบว่าเซสชั่นก็ไม่ได้หายไป 0แต่ประชาชนของเซสชั่นแรกคือ 1ช่วงที่สองกว่ามีบัตรประจำตัวประชาชน

คำตอบ:


108

screen -dลองถอดมันเป็นครั้งแรกด้วย หากยังไม่ได้ผลคุณสามารถลองเพิ่มลำดับการเน้นได้

   -d|-D [pid.tty.host]
        does  not  start screen, but detaches the elsewhere running screen session. It has the
        same effect as typing "C-a d" from screen's controlling terminal. -D is the equivalent
        to  the  power  detach key.  If no session can be detached, this option is ignored. In
        combination with the -r/-R option more powerful effects can be achieved:

   -d -r   Reattach a session and if necessary detach it first.

   -d -R   Reattach a session and if necessary detach or even create it first.

   -d -RR  Reattach a session and if necessary detach or create it. Use the first  session  if
           more than one session is available.

   -D -r   Reattach a session. If necessary detach and logout remotely first.

   -D -R   Attach  here and now. In detail this means: If a session is running, 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.

   -D -RR  Attach here and now. Whatever that means, just do it.

11
-d -rตัวเลือกด้วยกันจะบังคับให้แนบเซสชั่นที่
ทิมเคนเนดี

ฉันมักจะใช้screen -xเพื่อให้ฉันสามารถแนบจากหลายสถานที่ในครั้งเดียว แน่นอนถ้าคุณเผลอปิดหน้าต่างมันดูเหมือนว่า-d -rจะดีกว่าถ้าเก็บของไว้เรียบร้อย
mpontillo

5
screen -r '1234.somescreensession'

มีหน้าจออยู่:

1234.somescreensession (แนบ)

ไม่มีหน้าจอที่จะดำเนินการต่อที่ตรงกับ 1234.somescreensession

นี่เป็นวิธีง่ายๆในการเรียกคืนเซสชั่นหน้าจอนั้น

screen -D -r '1234.somescreensession'

4

ฉันประสบปัญหาเดียวกันหลังจากการเชื่อมต่อ ssh ของฉันปิดโดยไม่คาดคิดกับข้อความWrite Failed: broken pipeในขณะที่ฉันเชื่อมต่อเซสชันหน้าจอ อย่างไรก็ตามฉันไม่สามารถรับเซสชันหน้าจอของฉันอีกครั้งเพื่อใช้คำสั่งใด ๆ ข้างต้น โปรดทราบว่าฉันใช้รุ่นต่อไปนี้:

~> screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

เห็นได้ชัดว่ายังคงมีอินสแตนซ์ของการsshdใช้งานซึ่งทำให้ฉันไม่ต้องแยกและติดตั้งเซสชันอีกครั้ง หลังจากระบุPIDของอินสแตนซ์ที่เหมาะสมsshdและไอเอ็นจีมันก็สามารถที่จะใส่กลับเข้าไปด้วยkillscreen -r


เพียงแค่ให้ข้อมูล: แน่นอนคุณจะพบมากกว่าหนึ่งsshdปีศาจหนึ่งจะสอดคล้องกับการเข้าสู่ระบบในปัจจุบันของคุณและอื่น ๆ ที่เป็นของค้างscreenเซสชั่น (ที่จริงอาจจะมีหลาย ๆ คนอื่น ๆsshdทำงาน s ที่อยู่ในหลาย ๆscreens)


ฉันมีปัญหาเดียวกันโทรดี
dianovich

3

บางครั้งหน้าจอหลายจอกำลังทำงานในพื้นหลัง

พวกเขาสามารถดำเนินการต่อโดย:

screen -r [pid]

ที่จะได้รับหน้าจอการทำงานครั้งแรกscreen -Rแล้วคุณจะเห็นทุก PIDs screen -r [pid]การทำงานของหน้าจอหลังจากงานที่โดย

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