首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查特定的Linux终端是否已经打开

检查特定的Linux终端是否已经打开
EN

Stack Overflow用户
提问于 2016-03-16 10:04:45
回答 2查看 443关注 0票数 0

我们有一个服务器启动脚本,它调用Mate终端(或GNOME终端)作为服务器启动过程的一部分,实质上是这样跟踪服务器信息日志:

代码语言:javascript
复制
mate-terminal --title="APPSERVER LOG" --working-directory=$SERVER_LOCATION --hide-menubar -e "sh -c 'tail -f --retry -n 400 ./server.log'" &

现在,正如您可能想象的那样,在开发过程中,会有相当多的开放终端在一天结束时跟踪相同的日志文件,这是由几个服务器重新启动引起的。

现在我的假设是:是否可以以某种方式检查打开的终端是否有一个特定的运行命令、一个特定的标题或类似的命令,只有在没有尾迹的情况下才能打开一个新的终端?

我检查了mate终端的手册页,但是找不到任何做窗口管理的东西。

我们正在运行CentOS7和MATE 1.12.1

代码语言:javascript
复制
cat /etc/*release
CentOS Linux release 7.2.1511 (Core) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-16 10:16:40

你可以尝试像这样对配偶进行grep pid:

代码语言:javascript
复制
pgrep -d " " -f path/to/mate/terminal/binary

然后,您将决定是否有必要打开另一个、杀死现有的或任何您想要的:)

票数 1
EN

Stack Overflow用户

发布于 2016-03-16 11:05:22

值得注意的是:基于@kitz的答案,我现在没有使用pgrep获得进程id,也没有打开新的跟踪窗口,而是使用pkill再次关闭现有的跟踪窗口和尾窗口。原因是,在此期间,日志文件可能已被删除,因此,即使使用仅用于初始打开的--retry,原始尾也可能丢失了日志。

所以这就是:

代码语言:javascript
复制
TAILCMD="tail -f --retry -n 400 ./server.log"
pkill -ef "$TAILCMD"
mate-terminal --title="Server Log" --working-directory=$SERVER_LOCATION --hide-menubar -e "sh -c '${TAILCMD}'" &

再次感谢@kitz为我指明了正确的方向!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36032408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档