Wie kann ich eine "verlorene" Bildschirmsitzung wiederherstellen?

80

Irgendwie habe ich es geschafft, ein Bildschirmfenster zu schließen, ohne es zu bemerken, sodass die Sitzung weiterhin als markiert ist attached. Dies hindert mich daran, mich wieder an diese Sitzung anzuschließen. Was kann ich machen?

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.

[aktualisieren]

Am Ende fand ich heraus, dass die Sitzung nicht verloren ging, aber die ID der ersten Sitzung ist 0. Die zweite Sitzung hat dann die ID 1.

Framester
quelle

Antworten:

108

Versuchen Sie es zuerst mit screen -d. Wenn das nicht funktioniert, können Sie in zunehmender Reihenfolge der Betonung versuchen ,

   -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.
angus
quelle
11
Die -d -rOptionen zusammen erzwingen das Anhängen dieser Sitzung.
Tim Kennedy
Ich benutze immer, screen -xdamit ich von mehreren Standorten gleichzeitig anhängen kann. Wenn Sie versehentlich ein Fenster schließen, ist es natürlich -d -rbesser, die Dinge in Ordnung zu halten.
mpontillo
5
screen -r '1234.somescreensession'

Es gibt einen Bildschirm auf:

1234.somescreensession (Beigefügt)

Zu 1234.somescreensession kann kein Bildschirm fortgesetzt werden.

Hier ist eine einfache Möglichkeit, diese Bildschirmsitzung wieder aufzunehmen.

screen -D -r '1234.somescreensession'
bresti
quelle
4

Ich hatte das gleiche Problem, nachdem meine SSH-Verbindung unerwartet mit der Nachricht geschlossen wurde, Write Failed: broken pipewährend ich eine angehängte Bildschirmsitzung hatte. Ich konnte meine Bildschirmsitzung jedoch nicht mit einem der obigen Befehle erneut verbinden. Beachten Sie, dass ich die folgende Version verwende:

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

Anscheinend gab es immer noch einen sshdLauf, der mich davon abhielt, die Sitzung abzutrennen und erneut anzuhängen. Nachdem ich PIDdie entsprechende Instanz von identifiziert sshdund killes wieder hergestellt hatte, konnte ich erneut eine Verbindung herstellen screen -r.


Nur zur Information: Sie werden auf jeden Fall mehr als einen sshdDämon finden, einer entspricht Ihrem aktuellen Login und ein anderer gehört zur veralteten screenSitzung (in der Tat könnten mehrere andere sshds laufen, die mehreren anderen screens gehören).

el_tenedor
quelle
Ich hatte das gleiche Problem guten Ruf
Dianovich
3

Manchmal laufen die mehreren Bildschirme im Hintergrund.

Sie können fortgesetzt werden durch:

screen -r [pid]

Um den Bildschirm zu erhalten, führen Sie zuerst aus screen -R, dann sehen Sie alle laufenden PIDs des Bildschirms, danach setzen Sie durch fort screen -r [pid].

Shiv Singh
quelle