In meinem benutzerdefinierten Bash-Skript für die Serverüberwachung, die mich tatsächlich in meinem CentOS-Server nimmt einige Aktionen zu zwingen und warnen, wenn Ressourcen mehr Zeit als erwartet überlastet sind, bekomme ich folgende FehlerVergleich Gleitkommazahlen in bash
Linie 17: [: 5,74: integer Ausdruck *
Nun sind alle iostat Ergebnisse sind float-Zahlen per Definition zu erwarten, und ich habe bereits awk
in meinem iostat-Befehl (WAIT) verwendet wird, so wie kann ich meine bash-Skript machen einen statt einer ganzen Zahl erwarten?
** Wert 5,74 stellt aktuelle iostat Ergebnis
#!/bin/bash
if [[ "`pidof -x $(basename $0) -o %PPID`" ]]; then
# echo "Script is already running with PID `pidof -x $(basename $0) -o %PPID`"
exit
fi
UPTIME=`cat /proc/uptime | awk '{print $1}' | cut -d'.' -f1`
WAIT=`iostat -c | head -4 |tail -1 | awk '{print $4}' |cut -d',' -f1`
LOAD=`cat /proc/loadavg |awk '{print $2}' | cut -d'.' -f1`
if [ "$UPTIME" -gt 600 ]
then
if [ "$WAIT" -gt 50 ]
then
if [ "$LOAD" -gt 4 ]
then
#action to take (reboot, restart service, save state sleep retry)
MAIL_TXT="System Status: iowait:"$WAIT" loadavg5:"$LOAD" uptime:"$UPTIME"!"
echo $MAIL_TXT | mail -s "Server Alert Status" "[email protected]"
/etc/init.d/httpd stop
# /etc/init.d/mysql stop
sleep 10
# /etc/init.d/mysql start
/etc/init.d/httpd start
fi
fi
fi
CentOS Release 6.8 (Final) 2.6.32-642.13.1.el6.x86_64
Bash hat nur Ganzzahl Mathe; Sie müssen ein anderes Werkzeug als bash (wie awk) verwenden, um Fließkomma zu machen. –
Dies ist jedoch einfacher (viel einfacher!), Weil Sie mit ganzzahligen Konstanten vergleichen. –
BTW, Floating-Point-Mathematik in bash im Allgemeinen zu tun ist [BashFAQ # 22] (http://mywiki.wooledge.org/BashFAQ/022). –