【问题标题】:CUT command doesn't work in crontabCUT 命令在 crontab 中不起作用
【发布时间】:2017-02-16 14:27:17
【问题描述】:

我写了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

帮帮我!

【问题讨论】:

    标签: shell awk cron crontab cut


    【解决方案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
    

    【讨论】:

    • 它有效。谢谢@grail。脚本开头的命令和#!/bin/bash 的完整路径对我有用。
    猜你喜欢
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 2020-02-12
    • 2019-10-12
    • 2019-01-22
    • 2021-09-30
    相关资源
    最近更新 更多