screen
。是否可以通过某种方式检查我现在是否处于
screen
会话中? #1 楼
您可以查看$STY
变量(由screen命令设置的变量)。如果不是“”,则说明您正在进行屏幕会话。我在屏幕中
$ echo $STY
29624.pts-1.iain-10-04
$
我不在屏幕中
/>
$ echo $STY
$
#2 楼
您可以查看$ TERM变量。echo $TERM
如果是
screen
会话,则术语变量应返回“屏幕”。root@deore:/volumes# echo $TERM
screen
Ctrl -a -d(退出屏幕)
root@deore:/volumes# echo $TERM
xterm
还请检查:https://stackoverflow.com/questions/3472287/how-do-you-tell-if当前终端会话在gnu屏幕中
评论
这假定您出于某种原因没有故意弄乱您的TERM值。
–大卫·麦金托什(David Mackintosh)
2011年4月11日,凌晨3:04
如果要在屏幕上更改TERM变量,则会招来各种麻烦。
–womble♦
16年8月11日在8:24
我的Solaris 2.6节点在将TERM值设置为屏幕值时表现不佳。
–大卫·麦金托什(David Mackintosh)
16年8月11日在17:56
与$ STY选项不同,进入sudo环境时似乎保留了“ $ TERM” =“ screen”。
–梅勒比乌斯
16 Dec 13 '10:00
#3 楼
除非更改了默认键绑定,否则可以执行Ctrl + a-> Ctrl + t,如果您在屏幕上,它将显示时间。即使您已将ssh:d移到其他地方,这也将起作用,这与其他建议不同。评论
我们为什么不反对这一点。
– AndreKR
2014年3月6日在2:36
这是最好的解决方案吗?如果您不在屏幕上,并且^ A ^ T是您当前正在运行的程序中“ nuke your homedir”的按键序列怎么办?
–womble♦
16年8月11日在8:25
@womble如果您在一个未知程序中,可能会对键序列和命令做出随机破坏性的操作,那么没有什么是安全的。
–垃圾
16年8月12日在8:55
@AndreKR:在脚本中不起作用
–弗兰克·默尼纳尔
19年1月19日在20:38
即时消息不赞成,因为在一个屏幕上,并筛选到另一个屏幕,我真的需要看看是否$ STY设置。由于某种原因,它重新变空了。
–布赖恩·托马斯(Brian Thomas)
19年4月23日在1:18
#4 楼
caption
中的~/.screenrc
命令是区分屏幕会话的好方法。我个人使用此命令:
$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"
它添加了屏幕底部的一行如下:
Screen session on gbook (system load: 1,75 1,74 1,68) Lun 05.01.2015 13:01
第一部分(系统名称+负载)为绿色,日期为粉红色。有用且不容错过!
评论
太棒了!它不会妨碍您(底部位置),始终可见(并带有颜色),并提供有关系统的有用信息。我在这里也发布了stackoverflow.com/a/43571028/2450431
–hrvoj3e
17年4月23日在12:22
#5 楼
我找到了另一个解决方案:修改您的
.screenrc
,所以我的屏幕会话看起来与普通终端完全不同。评论
我想我知道您的建议,并且在某些情况下可以完全避免此问题。如果通过显示(例如)示例.screenrc文件来描述您的意思,则可能会更有用。
– jvriesem
19年4月29日在18:42
#6 楼
如果您正在查看命令行提示符,则只需键入任何内容,然后按Ctrl + A。如果光标跳到提示的开头,则说明您不在屏幕内。如果您还必须打A,那么您就是。#7 楼
做一个screen -ls
。它会明确指示Attached
与Detached
的状态。示例附加:
$ screen -ls | grep tached
3132.pts-0.esavo00 (Attached)
示例分离:
$ screen -ls |grep tached
3132.pts-0.esavo00 (Detached)
评论
如果在其他地方连接了屏幕,则可能是一个问题。
–丹尼斯·诺尔特
2015年4月29日在9:15
#8 楼
screen -ls
查看会话,
screen -r sessioninfo
如果断开,则重新连接到断开的连接。
screen -D -r sessioninfo
重新连接到断开连接的主机。
评论
这不能回答问题。
–womble♦
16年8月11日在8:22
评论
这假定您仍在本地计算机上正在运行的会话中。如果启动屏幕,然后在其他地方使用SSH,则此操作将无效。
–大卫·麦金托什(David Mackintosh)
2011年4月11日,下午3:05
如果测试-n“ $ STY”;然后printf“这是一个名为'$ STY'的屏幕会话。\ n”; else printf“这不是屏幕会话。\ n”;科幻
–aggregate1166877
2015年9月19日于17:08
@DavidMackintosh如果您通过SSH进入其他地方,则按ctrl-D将“使我与服务器断开连接”,这正是问题所在。
–womble♦
16年8月11日在8:24
@ aggregate1166877如果您在我现在使用的每台机器上以别名形式发布,则我有此提示。
–爱德华多·贝塞拉(Eduardo Bezerra)
16 Sep 10'在12:32