CUT 命令在 crontab 中不起作用

CUT command doesn't work in crontab

我写了shell脚本来监控space

  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 中计划时脚本的输出

FilesystemK-blocks$d$Available$$Mounted$on udev4548845484$/dev tmpfs133260496$/run /dev/sda166843043659732787364$/ none[=12=][=12=]$/sys/fs/cgroup none20[=12=]20[=12=]$/run/lock none5665202072632$/run/shm none24002344$/run/user

帮帮我!

不确定我是否遵循了您想要获得的信息,但是无论何时您使用 crontab,您都应该使用所有要使用的命令的完整路径,因为所有命令的路径可能不可用/设置。您的代码可以特别短于:

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

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