2017-02-16 47 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'的完整路径适用于我。 –