0

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

mate-terminal --title="APPSERVER LOG" --working-directory=$SERVER_LOCATION --hide-menubar -e "sh -c 'tail -f --retry -n 400 ./server.log'" &

现在,正如您可能想象的那样,在开发一个终端时,由于多次服务器重新启动,最终会有相当多的开放终端在一天结束时拖尾相同的日志文件。

现在我的问题是:是否有可能以某种方式检查打开的终端以获取特定的运行命令、特定的标题或类似内容,以仅在没有尾随的情况下打开一个新的终端?

我检查了 mate-terminal 的手册页,但找不到任何可以执行任何窗口管理的内容。

我们正在运行 CentOS7 和 MATE 1.12.1

cat /etc/*release
CentOS Linux release 7.2.1511 (Core) 
4

2 回答 2

1

您可以尝试像这样 grep mate 的 pid:

pgrep -d " " -f path/to/mate/terminal/binary

从那里你决定是否有必要打开另一个,杀死现有的,或者你想要的任何东西:)

于 2016-03-16T10:16:40.890 回答
0

对于它的价值:基于@kitz Answer我现在最终不使用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 为我指明了正确的方向!

于 2016-03-16T11:05:22.850 回答