是否可以在脚本中判断它是否在GNU屏幕中运行?

我们在远程服务器上有一个长时间运行的进程,这个进程会不时手动启动。 不幸的是,连接和启动作业的ssh会话可能会遇到互联网连接死亡,内核恐慌和其他一系列其他挑战。

屏幕似乎是确保过程不被中断的完美方式。 然而,依靠一个人总是记得开始画面,然后运行脚本来启动过程是一个等待发生的问题。 有没有办法从脚本我可以检查脚本是否被屏幕内部调用? 如果是,则进程将继续,否则脚本将退出并显示一条消息,指示用户先运行屏幕。

有一个环境variables。 如果正在屏幕内运行, $TERM将被screen 。 就这么简单 只要做一个如果就可以了。 例如,

 if [ $TERM != 'screen' ]; then echo foo; else echo bar; fi 

在屏幕上会回显栏; 否则就是foo。

当你使用屏幕时,为什么不用'nohup'来运行脚本呢? 这也将确保它在断开连接的情况下继续运行。

它默认输出到一个文件,所以你可以使用其他工具来监视脚本输出,如果你愿意。