0
서버 모니터링을위한 사용자 정의 bash 스크립트에서 실제적으로 내 CentOS 서버가 일부 동작을 수행하도록하고 리소스가 예상보다 많은 시간 과부하되는 경우 경고합니다.bash에서 부동 소수점 숫자 비교하기
라인 (17) : [: 5.74 : 정수 표현
지금 정의에 의해 모든 iostat의 결과는 부동 소수점 숫자와 나는 이미 내 iostat 명령 (WAIT)에 awk
을 사용하고 내가 내 bash는 스크립트를 만들 수있는 방법 * 예상 정수 대신에 하나를 기대 하는가?
는 ** 값 5.74는 현재 iostat의 결과를 나타냅니다
#!/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 (최종) 6.8 2.6.32-642.13.1.el6.x86_64
배쉬는 정수 연산 만 수행합니다. 부동 소수점을 수행하려면 bash 이외의 도구 (예 : awk)를 사용해야합니다. –
그러나 정수 상수와 비교하기 때문에 더 쉽습니다 (훨씬 쉽습니다!). –
BTW, 일반적으로 bash에서 부동 소수점 연산을 수행하는 것은 [BashFAQ # 22] (http://mywiki.wooledge.org/BashFAQ/022)입니다. –