2017-02-16 51 views
0

我已經寫shell腳本來監視空間CUT命令不會在crontab中

echo "___________" `date` "___________" 
df | tr -s ' ' $'\t' | cut -f5 > file.txt 
echo `sed 's/Use//g' file.txt` > file.txt 
echo `sed 's/%//g' file.txt` > file.txt 
expression=`cat file.txt | sed -e 's///g'` 
echo $expression 
a=($expression) 
#echo ${a[0]} 
#echo ${a[1]} 
#echo ${a[2]} 
#echo ${a[3]} 
#echo ${a[4]} 
#echo ${a[5]} 
#echo ${a[6]} 
total=`expr ${a[0]} + ${a[1]} + ${a[2]} + ${a[3]} + ${a[4]} + ${a[5]} + ${a[6]}` 
echo $total 
server=`who` 

if [ $total -ge 90 ] 
then 
    echo "greater" 
else 
    echo "Space occupied " $total "%" 
fi 

當我運行在終端這個腳本,它工作正常運行。 tr and cut命令正常工作。但是當我在crontab中安排這個腳本時,tr和cut命令不會分析df命令的輸出。 下面是腳本的輸出時,它是終端腳本

1 1 96 0 0 4 1 
103 
greater 

輸出時,它被安排在cron

Filesystem$1K-blocks$d$Available$$Mounted$on udev$1945488$4$1945484$1$/dev tmpfs$391332$836$390496$1$/run /dev/sda1$476684304$433659732$18787364$96$/ none$4$0$4$0$/sys/fs/cgroup none$5120$0$5120$0$/run/lock none$1956652$84020$1872632$5$/run/shm none$102400$56$102344$1$/run/user 

幫幫我!

回答

1

不知道我跟着你正在試圖獲得,但每當你使用crontab來用作路徑都可能無法使用/設置所有的命令,你應該使用完整路徑。您的代碼可能特別短到:

echo "___________$(/usr/bin/date)___________" 
total=$(/usr/bin/df | /usr/bin/awk 'NR > 1 && NR < 9{s+=$5}END{print s}') 

if ((total >= 90)) 
then 
    echo "greater" 
else 
    echo "Space occupied $total%" 
fi 
+0

它的工作原理。謝謝@grail。腳本開始時命令和'#!/ bin/bash'的完整路徑適用於我。 –