我们有一个服务器启动脚本,它调用Mate终端(或GNOME终端)作为服务器启动过程的一部分,实质上是这样跟踪服务器信息日志:
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
cat /etc/*release
CentOS Linux release 7.2.1511 (Core) 发布于 2016-03-16 10:16:40
你可以尝试像这样对配偶进行grep pid:
pgrep -d " " -f path/to/mate/terminal/binary然后,您将决定是否有必要打开另一个、杀死现有的或任何您想要的:)
发布于 2016-03-16 11:05:22
值得注意的是:基于@kitz的答案,我现在没有使用pgrep获得进程id,也没有打开新的跟踪窗口,而是使用pkill再次关闭现有的跟踪窗口和尾窗口。原因是,在此期间,日志文件可能已被删除,因此,即使使用仅用于初始打开的--retry,原始尾也可能丢失了日志。
所以这就是:
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为我指明了正确的方向!
https://stackoverflow.com/questions/36032408
复制相似问题