我如何编写脚本来检查进程是否需要一定的秒数才能响应,如果超过该秒数则将其终止?
我试过超时命令,但问题是它是源专用服务器,当我编辑它时是 bash 脚本:
HL=./srcds_linux
echo "Using default binary: $HL"
并将其更改为超时 25 ./srcds_linux 并以 root 身份运行它,它不会运行服务器: 错误:未找到源引擎二进制文件“”,正在退出
假设我无法编辑服务器 bash 脚本,有没有一种方法可以创建一个脚本来检查是否有任何程序未执行 w/脚本在 x 秒内超时?
最佳答案
听起来问题出在您错误地更改了脚本。
如果您正在查看 this script ,逻辑基本上是这样的:
HL=./srcds_linux
if ! test -f "$HL"
then
echo "Command not found"
fi
$HL
听起来您正在尝试设置 HL="timeout 25 ./srcds_linux"
。这将导致文件检查失败。
更正确的方法是更改调用,而不是要调用的文件:
HL=./srcds_linux
if ! test -f "$HL
then
echo "Command not found"
fi
timeout 25 $HL
timeout
如果花费的时间太长,程序就会终止。它不关心程序是否响应任何东西,只关心它花费的时间超过 25 秒。
如果程序似乎挂起,您可以例如查看是否停止输出数据25秒:
your_command_to_start_your_server | while read -t 25 foo; do echo "$foo"; done
echo "The command hasn't said anything for 25 seconds, killing it!"
pkill ./srcds_linux
关于linux - 编写一个 bash 脚本来检查进程是否在 x 秒内响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23095648/