你如何知道当前连接的GNU Screen会话?

4

在办公室,我们经常使用GNU Screen,有时候如果我不记笔记,就会不知道自己在哪个Screen session中。

我的问题是如何知道自己在哪个Screen session中?您有什么方法可以检查吗?

澄清一下:我需要知道的是当我执行以下操作:

~$ screen -ls

我看到类似这样的东西:

There is a screen on:
    4732.work_Sept42012     (Attached)
    3551.web01  (Attached)
    5521.mysql01 (Attached)
    1255.tomcat05 (Detached)
    3326.oracle15 (Attached)

 1 Socket in /tmp/uscreens/S-icasimpan.

我如何知道我当前是否连接到任何已连接的会话?
提前感谢。

1
请参考来自superuser.com的此答案 - Burhan Khalid
@BurhanKhalid 这是一个好观点,但我想知道是否有屏幕生成的信息可以查询。+1 因为给出了一个有帮助的回复 :) - icasimpan
可能是重复的问题:如何判断自己是否在screen中? - Maic López Sáenz
2个回答

7
除了使用 sessionname 屏幕命令外,screen 还为其启动的进程设置了 STY 环境变量。您可以从 shell 中检查此变量的值:
$ echo $STY
5521.mysql01
$

4

更新:

ctrl+a:sessionname 可以用于显示当前屏幕会话的名称。

之前的回复(解释错误的问题):

我也曾为此苦苦挣扎,直到我发现了神奇的 hardstatus 功能。在我的 ~/.screenrc 中加入以下两行,我就可以在屏幕会话底部得到以下信息。

hardstatus alwayslastline
hardstatus string '%{= kG}%-Lw%{= kW}%50> %n*%f %t%{= kG}%+Lw%< %{= kG}%-=%D %M %d | %C:%s %A %1`%{-}'

我正在查看我的本地计算机上的一个屏幕会话,其中包含三个窗口(bashmumblekalkyl)。在名为mumble的活动窗口中,我通过ssh连接到另一台计算机,在该计算机上运行另一个屏幕会话,其中包含三个窗口(topautobash)。我可以看到两个会话中的所有窗口,并跟踪自己所在的位置。

1
在状态栏中显示当前时间的目的是为了查看连接是否处于活动状态,即如果我断开连接,则时间会停止。 - Backlin
你的回复很有帮助,我现在已经在我的.screenrc文件中使用了它。我已经在我的问题中添加了澄清语句,你可能也有答案。对于你的帮助,我给你加上一个赞 :) - icasimpan
当使用sudo(或任何不保留设置$STY的父环境的上下文)时,^A:sessionname 方法可正常工作。 - gorjusborg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接