i使用屏幕运行Minecraft Server .jar,我想编写一个bash脚本,以查看最近的行是否每五分钟左右更改。如果有的话,那么脚本将从开始开始,然后在五分钟内再次进行检查。如果没有,它将杀死Java过程。
我将如何通过bash脚本从屏幕上获取最后一行文本?
如果我理解,则可以在文件中重定向程序的输出并使用操作员>进行处理。尝试运行:
ls -l> myoutput.txt
并打开创建的文件。
您要使用tail
命令。tail -n 1
将为您提供文件的最后一行或重定向标准输出,而tail -f
将保持tail
程序进行直到您自己取消为止。
例如:
echo -e "JellonPuddingnSkittles" | tail -n 1 | if grep -q Skittles ; then echo yes; fi
第一部分只是打印三行文本:
Jello
Pudding
Skittles
tail -n 1
找到了文本的最后一行(" Skittles
"),并将其传递给下一节。
grep -q
如果找到您的图案或错误,则只需返回true,而无需实际倾倒或输出任何内容。
因此,if grep -q Skittles
部分将检查该grep -q Skittles
模式的结果,如果发现Skittles
,将" yes
"打印到屏幕上。如果没有,则没有任何印刷(尝试用Pudding
替换Skittles
,即使它在原始输入中,它也从未将其列为tail -n 1
调用的另一端)。
也许您可以使用该逻辑并输出.jar到标准输出,然后每5分钟搜索该输出?