【问题标题】:How can you read the most recent line from the linux program screen?如何从 linux 程序屏幕读取最新的一行?
【发布时间】:2014-02-05 02:36:44
【问题描述】:

我使用 screen 运行我的世界服务器 .jar,我想编写一个 bash 脚本来查看最近的行是否每五分钟左右改变一次。如果有,那么脚本将从头开始并在另外五分钟内再次进行检查。如果没有,它应该杀死 java 进程。

如何通过 bash 脚本从屏幕上获取最后一行文本?

【问题讨论】:

    标签: linux text grep gnu-screen


    【解决方案1】:

    如果我理解了,您可以将程序的输出重定向到一个文件中并使用运算符 > 处理它。 尝试运行:

    ls -l > myoutput.txt

    并打开创建的文件。

    【讨论】:

      【解决方案2】:

      您想使用tail 命令。 tail -n 1 将为您提供文件的最后一行或重定向的标准输出,而 tail -f 将保持 tail 程序运行,直到您自己取消它。

      例如:

      echo -e "Jello\nPudding\nSkittles" | tail -n 1 | if grep -q Skittles ; then echo yes; fi
      

      第一部分只打印三行文本:

      Jello
      Pudding
      Skittles
      

      tail -n 1 找到最后一行文本(“Skittles”)并将其传递到下一节。

      所以if grep -q Skittles 部分将检查grep -q Skittles 模式的结果,如果找到Skittles,则在屏幕上打印'yes'。如果不是,则不会打印任何内容(尝试将 Skittles 替换为 Pudding,即使它在原始输入中,它也从未在 tail -n 1 调用的另一端出现)。

      也许您可以使用该逻辑并将您的 .jar 输出到标准输出,然后每 5 分钟搜索一次该输出?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        • 1970-01-01
        • 2013-06-11
        相关资源
        最近更新 更多