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


10

我们在不时手动启动的远程服务器上运行时间很长。不幸的是,用于连接和启动工作的ssh会话可能会导致Internet连接中断,内核崩溃以及其他许多挑战。

屏幕似乎是确保过程不中断的理想方法。但是,依靠一个人始终记住启动屏幕,然后运行脚本来启动该过程是一个等待发生的问题。有没有一种方法可以检查脚本是否正在从屏幕内调用?如果是,则该过程将继续,否则脚本将退出并显示一条消息,指示用户首先运行屏幕。


Answers:


11

有一个环境变量。如果正在屏幕上运行,$TERM将为screen。就这么简单;只是做一个如果。例如,

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

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


2
screen-256color如果用户配置了256色支持,也可能是这样。
mgorven 2012年

或在安装byobu的系统上使用screen-bce。echo $ TERM screen-
bce

7

使用屏幕时,为什么不使用'nohup'运行脚本?如果断开连接,这还将确保它继续运行。

默认情况下,它会输出到文件,因此您可以根据需要使用其他工具来监视脚本输出。


1
虽然使用nohup运行将获得确保进程继续运行的相同结果,但我是否还会遇到可能忘记使用nohup运行脚本的问题?还是脚本中有一种方法可以确保使用“ nohup”,还是我需要创建一个包装器脚本来使用nohup调用我的原始脚本?
2012年

是的 当我像爱孩子一样爱我的padawans(初级系统管理员)时,他们经常忘记这种事情。因此,所有内容都被整理好了,这样他们就不必记住要在重要命令前加上什么内容。
麦哲伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.