我在用着屏幕在 debian lenny 上,我想使用该-R
选项。从man screen
:
-R attempts to resume the youngest (in terms of creation time)
detached screen session it finds. If successful, all other com‐
mand-line options are ignored. If no detached session exists,
starts a new session using the specified options, just as if -R
had not been specified.
但是,当我运行时,screen -R
它实际上并未附加到最年轻的分离会话。相反,它抱怨有“几个合适的屏幕”,我需要选择其中之一。
我错过了什么吗?我怎样才能让这个工作像广告上说的那样?
答案1
尝试使用screen -RR
.
例子:
$ screen -ls
There are screens on:
5958.pts-3.sys01 (08/26/2010 11:40:43 PM) (Detached)
5850.pts-1.sys01 (08/26/2010 11:40:35 PM) (Detached)
2 Sockets in /var/run/screen/S-sdn.
请注意,屏幕 5958 是最年轻的。使用screen -RR
连接到屏幕 5958。这些-RR
选项在 的文档中有进一步的解释-d -RR
。
-d -RR Reattach a session and if necessary detach or create it. Use
the first session if more than one session is available.
我经常使用的另一个技巧是给-S
屏幕添加标签/标签。然后,如果列表变得难以处理,您可以使用该标签重新附加,而无需记住每个屏幕中发生的情况。
示例(vim 和curl 的启动屏幕):
$ screen -dm -S curl
$ screen -dm -S vim
$ screen -list
There are screens on:
11292.vim (08/27/2010 12:02:53 AM) (Detached)
11273.curl (08/27/2010 12:01:42 AM) (Detached)
注意:该-dm
选项仅用于启动分离屏幕
然后,稍后,您可以使用标签轻松重新连接curl
。
# screen -R curl
答案2
我在 gnome-terminal 中使用 screen -R,正如您所说,如果同时运行 2 个会话,则 gnome-terminal 会立即退出。
我通过运行解决了这个问题
sh -c "screen -R || screen -D -RR"
这正如你所期望的那样工作。