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

时间:2016-03-16 10:04:45

标签: linux terminal centos7 tail mate-desktop

我们有一个服务器启动脚本调用一个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 / *发布 CentOS Linux发行版7.2.1511(核心版)

2 个答案:

答案 0 :(得分:1)

你可以尝试像这样grep pid of mate:

<table>
  <tr>
    <th colspan=2>WELZIJN EN SOCIALE WETENSCHAPPEN</th>
  </tr>
  <!--1e graad -->
  <tr>
    <td class="vertical">
      1e graad
    </td>
    <td>
      <table>
        <tr>
          <td class="vertical" style="background-color:red;color:#fff;">
            1e en 2e jaar
          </td>
          <td>
            <table>
              <tr>
                <td>
                  MODERNE WETENSCHAPPEN
                </td>
              </tr>
              <tr>
                <td>
                  SOCIALE EN TECHNISCHE VORMING
                </td>
              </tr>
              <tr>
                <td>
                  (DECORATIE +) VERZORGING - VOEDING
                </td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
    </td>
  </tr>
  <!--einde 1e graad-->
  
  <!--2e graad-->
    <tr>
    <td class="vertical">
      2e graad
    </td>
    <td>
      <table>
        <tr>
          <td class="vertical">
            3e en 4e jaar
          </td>
          <td>
            <table>
              <tr>
                <td>
                  SOCIALE EN TECHNISCHE WETENSCHAPPEN
                </td>
              </tr>
              <tr>
                <td>
                  VERZORGING - VOEDING
                </td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
    </td>
  </tr>
  <!--einde 2e graad-->
  
  <!--3e graad-->
    <tr>
    <td class="vertical dbl">
      3e graad
    </td>
    <td>
      <table>
        <tr>
          <td class="vertical">
            5e en 6e jaar
          </td>
          <td>
            <table>
              <tr>
                <td>
                  SOCIALE EN TECHNISCHE WETENSCHAPPEN
                </td>
              </tr>
              <tr>
                <td>
                  VERZORGING
                </td>
              </tr>
            </table>
          </td>
        </tr>
        <tr>
          <td class="vertical">
            7e jaar
          </td>
          <td>
            <table>
              <tr>
                <td>
                  KINDERZORG
                </td>
              </tr>
              <tr>
                <td>
                  THUIS- EN BEJAARDENZORG/ZORGKUNDE
                </td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
    </td>
  </tr>
  <!--einde 3e graad-->
</table>

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

答案 1 :(得分:0)

它的价值:基于@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指出我正确的方向!