特定 Bash 脚本出错

特定 Bash 脚本出错

首先,我必须羞愧地承认,不幸的是,我对脚本一无所知……我只是尝试使用一个似乎符合我的目标的脚本。

我正在使用 OpenVZ 运行 VPS 节点,我需要一个脚本,它将使用特定命令“vzctl restart SERVERID”自动重新启动滥用服务器负载的 VPS。

然而,不幸的是我什么也没得到,并且脚本在启动时返回错误。

原始脚本如下:

#! /bin/bash
export PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
maxload="20"; # put here the max loadavg permitted
cat /dev/null > loads.txt;
vzlist -o ctid,laverage > loads.txt;
cat loads.txt | while read line; do
vm=$(echo ${line:0:5});
load=$(echo ${line} | cut -d'/' -f3);
load2=$(echo ${load} | cut -d'.' -f1);
if [ $load2 -gt $maxload ]
    then
    echo "restarting $vm - $load";
    vzctl restart $vm;
    echo "$vm - $load" | mail -s "$vm restarted for overload" [email protected]
fi
done

如果我启动它,我会收到此错误:

antiload.sh:第 10 行:[:参数太多

我在网上查了一下,然后尝试用引号隔离第 10 行的变量,从而将代码更改为如下形式:

if [ "$load2" -gt $maxload ]

但我仍然收到错误,如下所示:

antiload.sh:第 10 行:[[:CTID LAVERAGE:表达式语法错误(错误标记是“LAVERAGE”)

请问,有人可以帮我调试这个脚本以便我能够使用它吗?

感谢您的关注、时间和帮助。

答案1

  1. 您正在尝试将数组与奇数的初始值进行比较。
  2. 您应该打印 $load2 变量并查看其内容。

相关内容