であるあなたのスクリプトでは、シェルに新しいしている場合は特に、ファイルにインデントして保存する必要があります!
#!/bin/sh
while sleep 1
do
if [ "$(top -n1 | grep -i ^cpu | awk '{print $2}')">>sy.log - ge "$Threshold" ]
then
echo "$(top -n1)" >> sys.log
fi
done
あなたの状態はちょっと変わったようです。それはうまくいくかもしれませんが、それは本当に複雑に見えます。中間結果を変数に格納し、評価します。 "-ge"に構文エラーがすぐに表示されます。
セキュリティ上の理由から、ログファイルを絶対パスに格納する必要があります。変数を使用して読みを簡素化する。
#!/bin/sh
LOGFILE=/absolute_path/sy.log
WHOLEFILE=/absolute_path/sys.log
Thresold=80
while sleep 1
do
TOP="$(top -n1)"
CPU="$(echo $TOP | grep -i ^cpu | awk '{print $2}')"
echo $CPU >> $LOGFILE
if [ "$CPU" -ge "$Threshold" ] ; then
echo "$TOP" >> $WHOLEFILE
fi
done