我有一个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
收到任何电子邮件我感谢任何帮助
答案 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
希望现在应该运行。