在 Ubuntu 上附加分离屏幕时的困惑

Reg*_*ser 1 gnu-screen ubuntu-10.04

screen -list 显示

There are screens on:
    9531.pts-0.ubuntu   (03/02/2011 12:43:34 PM)    (Detached)
    2101.pts-0.ubuntu   (03/02/2011 12:39:17 PM)    (Attached)
    2219.pts-0.ubuntu   (03/02/2011 11:20:56 AM)    (Attached)
3 Sockets in /var/run/screen/S-bond.
Run Code Online (Sandbox Code Playgroud)

但是当我打字的时候

screen -r 2101.pts-0.ubuntu
There is a screen on:
    2101.pts-0.ubuntu   (03/02/2011 12:39:16 PM)    (Attached)
There is no screen to be resumed matching 2101.pts-0.ubuntu.
Run Code Online (Sandbox Code Playgroud)

在这里我无法回到屏幕 2101.pts-0.ubuntu 并且事实上我退出了。好像我在哪里

screen -r 9531.pts-0.ubuntu
[detached from 9531.pts-0.ubuntu]
Run Code Online (Sandbox Code Playgroud)

然后在上面你可以看到我进入那个会话然后出来,我可以一次又一次地这样做。但是其他会话不是这样吗?所以我在做什么错误?

sci*_*rus 5

从 中可以看出screen -list,该屏幕会话当前已附加。如果不先将其分离,则无法从其他地方连接到它。您可以通过添加-d选项来做到这一点,例如screen -d -r 2101.pts-0.ubuntu. GNU Screen 手册中有更多信息。这是摘录:

-r [pid.tty.host]
-r sessionowner/[pid.tty.host]
恢复分离的屏幕会话。不能指定其他选项(除了与 -d/-D 的组合),尽管可能需要 [pid.]tty.host 的可选前缀来区分多个分离的屏幕会话。第二种形式用于连接到另一个在多用户模式下运行的用户的屏幕会话。这表明 screen 应该在另一个用户的目录中查找会话。这需要 setuid-root

-d|-D [pid.tty.host]
不启动屏幕,而是分离其他地方正在运行的屏幕会话。它与从屏幕的控制终端键入“Ca d”具有相同的效果。-D 相当于电源分离键。如果没有会话可以分离,则忽略此选项。结合 -r/-R 选项可以实现更强大的效果:

-d -r 重新连接会话,如有必要,首先将其分离。

-d -R 重新附加一个会话,如有必要,首先分离甚至创建它。

-d -RR 重新附加会话,并在必要时分离或创建它。如果有多个会话可用,请使用第一个会话。

-D -r 重新连接会话。如有必要,请先远程分离和注销。

-D -R 在这里和现在附上。详细来说,这意味着:如果会话正在运行,则重新连接。如有必要,请先远程分离和注销。如果它没有运行,请创建它并通知用户。这是作者的最爱。

-D -RR 在这里和现在附上。不管这意味着什么,就去做吧。

-x 附加到未分离的屏幕会话。(多显示模式)。

注意:通过“screen -list”检查会话状态总是一个好主意。