Назад | Перейти на главную страницу

Ошибка с конкретным сценарием bash

Прежде всего должен с позором признать, что я, к сожалению, ничего не знаю о скриптах ... Я просто пытаюсь использовать тот, который мне кажется подходящим.

Я использую узел VPS с OpenVZ, и мне нужен сценарий, который автоматически перезапустит VPS, злоупотребляя нагрузкой на сервер, с помощью специальной команды «vzctl restart SERVERID».

Но, к сожалению, ничего не получается, и скрипт при запуске выдает ошибки.

Исходный сценарий выглядит следующим образом:

#! /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" hostingstudio.net@gmail.com
fi
done

Если я его запускаю, я получаю такую ​​ошибку:

antiload.sh: строка 10: [: слишком много аргументов

Я немного поработал в Интернете, а затем попытался изолировать переменную в строке 10 с помощью кавычек, изменив таким образом код следующим образом:

if [ "$load2" -gt $maxload ]

но я все равно получаю следующее сообщение об ошибке:

antiload.sh: строка 10: [[: CTID LAVERAGE: синтаксическая ошибка в выражении (токен ошибки - "LAVERAGE")

Пожалуйста, кто-нибудь может помочь мне отладить этот скрипт, чтобы я смог его использовать?

Спасибо за внимание, время и помощь.

  1. Вы пытаетесь сравнить массив со значением инициализации, которое является нечетным.
  2. Вы должны распечатать переменную $ load2 и посмотреть, что содержит.