【发布时间】:2019-11-15 00:22:27
【问题描述】:
我编写了一个 shell 脚本并将其添加到我的 cron 中。它应该每分钟运行一次并检查过去 1 分钟的平均服务器负载,如果超过 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
显然有问题,因为它应该仅在负载超过 40 时记录并重新启动 Apache,但正如您从日志中看到的那样,负载为 9、7、6、5 和 5。有人能指出我正确的方向吗?
【问题讨论】: