Cron工作没有运行

时间:2017-11-03 19:08:36

标签: linux bash shell cron

我有一个Cron Job给我发了一封电子邮件,但它没有运行:

 #!/bin/bash
TotalMem=$(top -n 1 | grep Mem | awk 'NR==1{print $4}')
UsadoMem=$(top -n 1 | grep Mem | awk 'NR==1{print $8}')
PorcUsado=$(echo "scale=2;($UsadoMem/$TotalMem)*100"|bc)
echo $PorcUsado
UsoCpu=$(top -n 1 | grep Cpu | awk '{print $2}')
echo $UsoCpu

if [ $PorcUsado > 1 ] || [ $UsoCpu > 0 ]; then
   echo MEM: $PorcUsado CPU: $UsoCpu|mail -s "Recursos" "mymail@gmail.com"
fi

我在crontab -e中配置:

* ** * * peter sh /home/peter/scripts/check.sh

脚本通过bash直接运行,但我没有通过cron

收到任何电子邮件

我感谢任何帮助

2 个答案:

答案 0 :(得分:1)

失去彼得。该语法仅对/ etc / crontab有效,使用crontab -e创建/编辑的用户crontabs中没有用户名。如果您的脚本有chmod +x,那么您也不需要sh

* * * * * /home/peter/scripts/check.sh

P.S。:你可以大大简化你的剧本,保存在greps,两个awk和bc ......

#!/bin/bash
read -r UsoCpu PorcUsado <<< "$(  top -n 1 | awk '/Cpu/{printf "%s\t", $2} /Mem/ {printf "%.2f\n", ($8 / $4)*100 ; nextfile}')"
if [ $PorcUsado > 1 ] || [ $UsoCpu > 0 ]; then
   echo MEM: $PorcUsado CPU: $UsoCpu
fi

答案 1 :(得分:0)

你的cron应该是这样的:

* * * * * peter sh /home/peter/scripts/check.sh

希望现在应该运行。