“屏幕”指的是如何重新连接到断开连接的 ssh 会话中提到的程序。那是一个很好的设施。
但是有一个问题我很想知道。我怎么知道我是否在“屏幕”内运行?区别在于:
更好的是,我希望在 PS1 提示中显示此状态,以便我可以随时自动看到它。
[这可以被认为是我上一个问题的第 2 步创建后是否可以更改 GNU 屏幕会话名称?]
实际上,我想编写一个可以显示当前屏幕会话名称和更改当前会话名称的脚本。
例如:
sren armcross
Run Code Online (Sandbox Code Playgroud)
它将会话名称更改为armcross
(ARM gcc 交叉编译器)并输出如下内容:
screen session name changed from '25278.pts-15.linux-ic37' to 'armcross'
Run Code Online (Sandbox Code Playgroud)
所以,现在的关键问题是如何获取当前会话名称。不仅用于显示旧会话名称,而且根据创建后是否可以更改 GNU 屏幕会话名称?,我必须知道它(传递给 -d -r),然后才能将其更改为其他内容。
我们可以使用$STY
当前会话名称吗?$STY
将会话名称更改为用户定义的名称后,编号不会更改。但是,对于命令
screen -d -r <oldsessname> -X sessionname armcross
Run Code Online (Sandbox Code Playgroud)
?旧名?应该是用户定义的名称(如果曾经定义过)而不是$STY
,否则屏幕会出现错误“未找到屏幕会话”。
也许,有一个详细的方法,用于screen -list
列出所有会话(列出用户定义的名称),然后将 $STY 中的 pid 部分与列出的会话进行匹配,我们将找到当前会话的用户定义名称。这么直截了当的问题不应该这么冗长。你不这么认为吗?
-d -D 和 -r -R 选项似乎向屏幕用户暴露了太多的实现细节。似乎要重命名会话,您必须将其分离,然后进行重命名,然后重新附加它。对?
我的环境:opensuse 11.3,GNU screen 4.00.03 (FAU) 23-Oct-06
谢谢你。