如何编写脚本来检查某个进程是否需要花费几秒钟的时间来响应,如果超过该数量则会将其删除?
我已尝试过timeout命令,但问题是它是源专用服务器,当我编辑它的bash脚本时:
HL=./srcds_linux
echo "Using default binary: $HL"
并将其更改为超时25 ./srcds_linux并以root身份运行它不会运行服务器: 错误:源引擎二进制文件''没找到,退出
因此,假设我无法编辑服务器bash脚本,是否有办法创建一个脚本,可以检查是否有任何未执行脚本的程序在x秒内超时?
答案 0 :(得分:1)
听起来问题是你错误地改变了脚本。
如果您正在查看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