我使用screen运行一个minecraft服务器.jar,我想编写一个bash脚本来查看最近一行是否每五分钟左右更改一次。如果有,则脚本将从头开始并在另外五分钟内再次进行检查。如果没有,它应该杀死java进程。
我如何通过bash脚本从屏幕上获取最后一行文字?
答案 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分钟搜索一次该输出?