首先,我必须羞愧地承认,不幸的是,我对脚本一无所知……我只是尝试使用一个似乎符合我的目标的脚本。
我正在使用 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
- 您正在尝试将数组与奇数的初始值进行比较。
- 您应该打印 $load2 变量并查看其内容。