你怎么能从linux程序屏幕上读到最新的一行?

时间:2014-02-05 02:36:44

标签: linux text grep gnu-screen

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

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

2 个答案:

答案 0 :(得分:0)

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

ls -l> myoutput.txt

并打开创建的文件。

答案 1 :(得分:0)

您想使用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")并将其传递到下一部分。

grep -q如果找到你的模式,则返回TRUE,否则返回FALSE,而不实际转储或输出任何内容。

因此if grep -q Skittles部分会检查该grep -q Skittles模式的结果,如果找到Skittles,则会打印' yes'到屏幕。如果没有,则不会打印任何内容(尝试将Skittles替换为Pudding,即使它位于原始输入中,也从未将其发送到tail -n 1调用的另一端。 / p>

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