Я написал скрипт оболочки и добавил его в свой cron. Предполагается, что он запускается каждую минуту и проверяет среднюю загрузку сервера за последнюю минуту, а если он превышает 40, он должен записать загрузку, дату и затем перезапустить Apache httpd. Вот мой сценарий:
#!/bin/bash
LOGFILE=/home/user/public_html/domain.com/cron/restart.log
function float_to_int() {
echo $1 | cut -d. -f1
}
check=$(uptime | awk -F' *,? *' '{print $12}')
now=$(date)
checkk=$(float_to_int $check)
if [[ $checkk > 40 ]]; then
echo $now $checkk >> $LOGFILE 2>&1
/usr/bin/systemctl restart httpd.service
fi
Если я смотрю на файл журнала, я вижу следующее:
Wed Jul 3 20:02:01 EDT 2019 70
Wed Jul 3 23:03:01 EDT 2019 43
Wed Jul 3 23:12:01 EDT 2019 9
Wed Jul 3 23:13:01 EDT 2019 7
Wed Jul 3 23:14:01 EDT 2019 6
Wed Jul 3 23:15:02 EDT 2019 5
Wed Jul 3 23:16:01 EDT 2019 5
Что-то явно не так, поскольку он должен регистрировать и перезапускать Apache только в том случае, если нагрузка превышает 40, но, как вы можете видеть из журналов, загрузка была 9, 7, 6, 5 и 5. Может ли кто-нибудь указать мне правильное направление?