0
#!/bin/bash

# Obtain the server load
loadavg=`uptime |cut -d , -f 4|cut -d : -f 2`
thisloadavg=`echo $loadavg|awk -F \. '{print $1}'`

if [ "$thisloadavg" -eq "0.01" ]; then

ulimit  -n 65536
service nginx restart
service php-fpm restart

fi

エラーは次のとおりです。

./loadcheck.sh: line 7: [: 0.01: integer expression expected

ロードリターンが 0.00 である 0.01 未満であることを保証したいので、整数ではなく倍精度を比較できる loadcheck シェルスクリプトを実行したいと思います。

0 を使用すると、負荷が 0.05 であってもコードが実行されます。

4

2 に答える 2

1

zsh では、次のように簡単に使用できます。

if [[ "$thisloadavg" < "0.01" ]]; then

double [[ コンストラクトは追加のテストを許可し、zsh では浮動小数点テストを許可します。

于 2012-12-19T17:47:07.337 に答える
0

Bash は浮動小数点値を処理できないためawkexprやなどの追加のコマンドを使用する必要がありbcます。たとえば、次を使用しbcます。

loadavg=$(uptime | cut -d, -f4 |cut -d: -f2)
low_load=$(echo "$loadavg < 0.01" | bc -l)
if [ $low_load -eq 1 ]; then
  # do stuff
fi
于 2012-12-19T17:51:32.907 に答える