如何检查我是否在屏幕上?

是否有可能检查我现在是否在屏幕上? 我需要它来确定是否按Ctrl + D将断开我从服务器或只是closures当前屏幕。 谢谢。

你可以看看$STYvariables。 如果不是“”那么你正在屏幕会话中。 我在屏幕上

 $ echo $STY 29624.pts-1.iain-10-04 $ 

我不在屏幕上

 $ echo $STY $ 

你可以看看$ TERMvariables。

echo $TERM

如果是screen会话,术语variables应该返回“屏幕”。

 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-the-current-terminal-session-is-in-gnu-screen

除非您更改了默认的键绑定,否则您可以执行Ctrl-a Ctrl-t ,这将显示时间,如果您在屏幕中。 即使你有ssh:d别的地方,这个也行,不像其他的build议。

~/.screenrccaption命令是区分屏幕会话的好方法。

我个人使用这个:

 $ 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 

第一部分(系统名称+加载)为绿色,date为粉红色。 有用的,很难错过!

我find了另一个解决scheme:
修改.screenrc ,所以我的屏幕会话看起来完全不同于普通的terminal。

 screen -ls 

查看您的会话和

 screen -r sessioninfo 

重新连接到断开的连接,如果分离。

 screen -D -r sessioninfo 

重新连接到一个断开连接。

做一个screen -ls 。 它将明确指出“ Attached与“ Detached状态。

附加示例:

 $ screen -ls | grep tached 3132.pts-0.esavo00 (Attached) 

分离示例:

 $ screen -ls |grep tached 3132.pts-0.esavo00 (Detached)