linux - 编写一个 bash 脚本来检查进程是否在 x 秒内响应?

标签 linux bash scripting

我如何编写脚本来检查进程是否需要一定的秒数才能响应,如果超过该秒数则将其终止?

我试过超时命令,但问题是它是源专用服务器,当我编辑它时是 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/

相关文章:

linux - 如何为自定义应用程序选择静态端口号?

linux - 为什么我的 linux 熵有这么低的上限?

linux - 在 bash shell 中打印文件中每行的 3 个字符

c# - Powershell 替换功能在替换时将逗号视为点

shell - 确定视频何时完成缓冲

javascript - 用于异步 Linux 脚本的 Node.js

linux - 为什么 tar 不保留文件权限?

linux - 如何访问i2c设备驱动节点

Linux (Raspbian) 自动启动脚本

linux - 从日志文件中搜索值和计数