How do I force detach Screen from another SSH session?

LinuxSshTerminalGnu Screen

Linux Problem Overview


I had Screen running inside an SSH session. Terminal froze. After restarting Terminal, that Screen session still thinks it's attached. Maybe it is. Perhaps I don't really know what that means.

I'd like to attach to that Screen session from a fresh SSH login. I do not want to kill that Screen session as important things are happening over there. : )

The options I think I have ( none of which I know how to solve ):

  • How do I detach that Screen session?
  • How do I kill the SSH session that that Screen session is attached to?

Linux Solutions


Solution 1 - Linux

As Jose answered, screen -d -r should do the trick. This is a combination of two commands, as taken from the man page.

screen -d detaches the already-running screen session, and screen -r reattaches the existing session. By running screen -d -r, you force screen to detach it and then resume the session.

If you use the capital -D -RR, I quote the man page because it's too good to pass up.

>Attach here and now. Whatever that means, just do it. >>Note: It is always a good idea to check the status of your sessions by means of "screen -list".

Solution 2 - Linux

try with screen -d -r or screen -D -RR

Solution 3 - Linux

Short answer

  1. Reattach without ejecting others: screen -x
  2. Get list of displays: ^A *, select the one to disconnect, press d


Explained answer

Background: When I was looking for the solution with same problem description, I have always landed on this answer. I would like to provide more sensible solution. (For example: the other attached screen has a different size and a I cannot force resize it in my terminal.)

> Note: PREFIX is usually ^A = ctrl+a

> Note: the display may also be called: > > * "user front-end" (in at command manual in screen) > * "client" (tmux vocabulary where this functionality is detach-client) > * "terminal" (as we call the window in our user interface) /depending on

1. Reattach a session: screen -x

-x attach to a not detached screen session without detaching it

2. List displays of this session: PREFIX *

It is the default key binding for: PREFIX :displays. Performing it within the screen, identify the other display we want to disconnect (e.g. smaller size). (Your current display is displayed in brighter color/bold when not selected).

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

Using arrows , select the targeted display, press d If nothing happens, you tried to detach your own display and screen will not detach it. If it was another one, within a second or two, the entry will disappear.

Press ENTER to quit the listing.

Optionally: in order to make the content fit your screen, reflow: PREFIX F (uppercase F)

Excerpt from man page of screen:

> displays > > Shows a tabular listing of all currently connected user front-ends (displays). This is most useful for multiuser sessions. The following keys can be used in displays list: > > * mouseclick Move to the selected line. Available when "mousetrack" is set to on. > * space Refresh the list > * d Detach that display > * D Power detach that display > * C-g, enter, or escape Exit the list

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionT. Brian JonesView Question on Stackoverflow
Solution 1 - LinuxMatt S.View Answer on Stackoverflow
Solution 2 - LinuxJose Luis MartinView Answer on Stackoverflow
Solution 3 - Linuxuser10874456View Answer on Stackoverflow