0

我对脚本编写的经验很少,但我想进入它。

基本上,这是针对 StarMade 服务器的,因为它的 java 进程不会在崩溃时关闭而是保持运行,因此很难正确检测到崩溃,而且这些崩溃非常频繁地发生。

不过,我想要的是在服务器日志文件中找到指示服务器已冻结/已崩溃的特定行,并在读取此行后终止进程,然后另一个脚本将再次启动它(已经获得了该部分)。日志文件不断被服务器更新,所以脚本基本上必须以某种方式“监视”文件。

我在任何地方都找不到与这个想法完全匹配的东西,但我试图从许多来源中收集一些东西,尽管我很确定这是完全错误的:

#!/bin/bash
cd "$(dirname "$0")"
if grep -Fxq "[SERVER] SERVER SHUTDOWN" log.txt.0
then
    kill -9 $(pidof StarMade.jar)
else
    false
fi

据我所知,这应该不断检查文件 log.txt.0 以找到与“[SERVER] SERVER SHUTDOWN”的直接匹配项,并在执行时终止服务器进程,或者在不执行时不执行任何操作,是这样吗一个正确的方法吗?我不想因为愚蠢的错误而破坏事情。

4

1 回答 1

0

尝试这个:

if ( grep -Fxq "[SERVER] SERVER SHUTDOWN" log.txt.0 > /dev/null ); then
    kill -9 $(pidof StarMade.jar)
fi
于 2013-11-07T04:35:16.870 回答