今天我发现我和我的朋友使用不同的方式连接到屏幕。我一直使用表格-x
,而他则使用-r
.我阅读了手册页,但无法想出一个产生不同结果的测试用例。
我在同一帐户上打开了两个控制台,并使用-r
和成功附加到它-x
。
这些命令有什么区别?
如果我尝试附加到已附加的同一屏幕,我只能发现错误消息不同:
$ screen -r 1486
There is no screen to be resumed matching 1486.
和
$ screen -x 1486
Attaching from inside of screen?
答案1
https://www.gnu.org/software/screen/manual/screen.html#Invoking-Screen
-x
即使您已经附加到会话,也会附加到该会话。
-r
仅当当前没有客户端附加到会话时才附加到会话。
如果您想测试它(您所做的测试听起来很像您尝试从屏幕会话内部附加到屏幕会话,您绝对不应该这样做),您需要两个单独的终端会话。首先,执行 screen 来启动屏幕会话并附加到它。在第二个中,执行以下操作screen -r
:
screen -r
There is a screen on:
562503.pts-2.E595 (Attached)
There is no screen to be resumed.
现在执行此操作screen -x
,您将附加到会话。如果您将两个终端并排放置,您还会注意到您在其中一个终端上所做的操作也将在另一个终端上可见。
简而言之:-r
用于附加分离的会话,-x
附加到附加的会话而不分离其他会话。