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

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

我们在远程服务器上有一个长时间运行的进程,它会不时手动启动。不幸的是,用于连接和启动作业的 ssh 会话可能会遇到网络连接中断、内核崩溃和一大堆其他挑战。

Screen 似乎是确保进程不被中断的完美方式。但是,依赖一个人始终记住启动 screen 然后运行脚本来启动进程是一个迟早要发生的问题。我能否从脚本中检查脚本是否在 screen 内被调用?如果是,进程将继续,否则脚本将退出并显示一条消息,指示用户先运行 screen。

答案1

有一个环境变量可以解决这个问题。如果它在屏幕中运行,$TERM则为screen。就这么简单;只需在其上执行 if 即可。例如,

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

在屏幕上时将回显栏;否则为 foo。

答案2

当您使用屏幕时,为什么不使用“nohup”运行脚本?这还可以确保它在断开连接时继续运行。

它默认输出到文件,因此如果您愿意,可以使用其他工具来监视脚本输出。

相关内容