Shell 剪切命令不';我不能在crontab中工作

Shell 剪切命令不';我不能在crontab中工作,shell,awk,cron,crontab,cut,Shell,Awk,Cron,Crontab,Cut,我已经编写了监视空间的shell脚本 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 $expr

我已经编写了监视空间的shell脚本

  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
当我在终端中运行这个脚本时,它工作得很好trcut命令工作正常。但当我在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

救救我

我不确定我是否遵循了您试图获取的内容,但无论何时使用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
echo“\uuuuuuuuuuuuuuuuuuuu$(/usr/bin/date)\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
总计=$(/usr/bin/df |/usr/bin/awk'NR>1&&NR<9{s+=$5}结束{print s})
如果((总数>=90))
然后
回声“更大”
其他的
echo“已占用空间$total%”
fi

它可以工作。谢谢你@grail。命令和
#的完整路径/脚本开头的bin/bash
适合我。