1

負荷が 15 を超えた場合にサーバーにメールを送信しようとしていますが、次のエラーが表示され続けます。

root@echo [~]# sh load.sh
load.sh: line 9: syntax error near unexpected token `fi'
load.sh: line 9: `fi'

これがload.shです

#!/bin/bash
SUBJECT="`hostname`server load is high"
TO=myemail@gmail.com
uptime > /tmp/load
if [ `uptime | awk '{ print$11 }' | cut -d. -f1` -gt 1 ];
then
mail -s "$SUBJECT" $TO < /tmp/load
exit
fi

サーバー uname -a

Linux 2.6.18-308.24.1.el5 #1 SMP Tue Dec 4 17:43:34 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

4

1 に答える 1

0

あなたと同じエラーは実際には発生しませんが、このソリューションは既にテストできます。

if [ `uptime | awk '{ print$11 }' | cut -d. -f1` -gt 1 ];

この条件は、float を整数と比較しようとします。このテストは、拡張テスト コマンドで行います。thenまた、条件と同じ行にキーワードを入れない場合は、セミコロンを忘れることができます:

if [[ `uptime | awk '{ print$11 }' | cut -d. -f1` > 1 ]]
then
   mail -s "$SUBJECT" $TO < /tmp/load
   exit
fi
于 2013-08-07T08:31:53.453 に答える