2017-11-03 15 views
0

Ich habe einen cron-Job mir eine E-Mail zu senden, aber es läuft nicht:Cron Job läuft nicht

#!/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" "[email protected]" 
fi 

ich konfiguriere in crontab -e:

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

Die Skripte über bash normalerweise direkt ausgeführt wird, aber ich erhalte keine E-Mails über cron

ich schätze jede Hilfe

+4

'* * * * *' 'nicht * ** * *'. Dieses Format scheint ungültig zu sein. – tadman

+0

Ich repariere es und laufe noch nicht :( –

+0

Während du ein eigenes Skript ausführst, ist das keine Programmierfrage und wäre besser geeignet für https://unix.stackexchange.com/questions oder https://superuser.com/questions/tagged/linux ... – tink

Antwort

0

Ihre cron wie t aussehen sollte sein:

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

Hoffentlich sollte das jetzt laufen.

+0

Noch nicht ausgeführt :( –

+0

Haben Sie Berechtigungen für den Benutzer Peter zur Ausführung? Warum haben Sie 'sh' in Ihrem Cron? – ZakHargreaves

+0

Peters haben die Berechtigungen '-rwxr-xr-x'. Das 'sh' wurde in a eingefügt versuch zu arbeiten ... ich entferne und arbeite noch nicht ... –

1

Verlieren Sie die Peter. Diese Syntax ist nur für/etc/crontab gültig, Benutzer crontabs, die mit crontab -e erstellt/bearbeitet wurden, haben den Benutzernamen nicht in ihnen. Und wenn Sie chmod +x Ihr Skript haben, brauchen Sie nicht entweder sh.

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

P. S .: Sie Ihr Skript drastisch vereinfachen könnte, sparen auf den greps, zwei awks und 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