Rogdab
12-02-2008, 16:46
Moin,
ich hab mir ein script gebaut das eine mail schikct sollte der load zu hoch werden. wenn ich es in der bash starte funktioniert es wunderbar.
sobald ich es cron übergebe hagelt es fehlermeldungen.
Wie kann ich cron beibringen die richtige umgebung einzurichten?
Das andere ist der test auf die bedingung, so richtig mag er die auch nicht.
#!/bin/bash
# checks if the load gets critical
TERM=linux
#export TERM
ADMIN_EMAIL="root"
SERVER_NAME[1]="host1"
SERVER_IP[1]=
DATUM=`date`
LOAD_1=`top -n 1 | awk -F, '/load/{sub(/%.*/,"",$4);print $4}'|sed 's/ load average\://'|sed 's/ //'`
LOAD_2=`top -n 1 | awk -F, '/load/{sub(/%.*/,"",$4);print $5}'|sed 's/ load average\://'|sed 's/ //'`
LOAD_3=`top -n 1 | awk -F, '/load/{sub(/%.*/,"",$4);print $6}'|sed 's/ load average\://'|awk '{print substr($0,0,5)}'|sed 's/ //'`
test1=$(echo "${LOAD_1} > 2.0" | bc -l)
test2=$(echo "${LOAD_2} > 2.0" | bc -l)
test3=$(echo "${LOAD_3} > 2.0" | bc -l)
echo $test1
echo $test2
echo $test3
if [ "$test1" -gt 0 ] || [ "$test2" -gt 0 ] || [ "$test3" -gt 0 ]
then
echo -e "load on ${SERVER_NAME[1]} is getting high
\naverage loads are at "$LOAD_1" "$LOAD_2" "$LOAD_3"
\nDate: ${DATUM}" | mail -s "load on host1 is getting high" $ADMIN_EMAIL
fi
exit 0
TERM environment variable not set.
TERM environment variable not set.
TERM environment variable not set.
(standard_in) 1: parse error
(standard_in) 1: parse error
(standard_in) 1: parse error
/server/scripts/check_load.sh: line 25: [: : integer expression expected
/server/scripts/check_load.sh/check_load.sh: line 25: [: : integer expression expected
/server/scripts/check_load.sh/check_load.sh: line 25: [: : integer expression expected
vielen Dank
EDIT: hab das ganze mal mit cat /proc/loadavg angefangen sollte die top fehler beheben
ich hab mir ein script gebaut das eine mail schikct sollte der load zu hoch werden. wenn ich es in der bash starte funktioniert es wunderbar.
sobald ich es cron übergebe hagelt es fehlermeldungen.
Wie kann ich cron beibringen die richtige umgebung einzurichten?
Das andere ist der test auf die bedingung, so richtig mag er die auch nicht.
#!/bin/bash
# checks if the load gets critical
TERM=linux
#export TERM
ADMIN_EMAIL="root"
SERVER_NAME[1]="host1"
SERVER_IP[1]=
DATUM=`date`
LOAD_1=`top -n 1 | awk -F, '/load/{sub(/%.*/,"",$4);print $4}'|sed 's/ load average\://'|sed 's/ //'`
LOAD_2=`top -n 1 | awk -F, '/load/{sub(/%.*/,"",$4);print $5}'|sed 's/ load average\://'|sed 's/ //'`
LOAD_3=`top -n 1 | awk -F, '/load/{sub(/%.*/,"",$4);print $6}'|sed 's/ load average\://'|awk '{print substr($0,0,5)}'|sed 's/ //'`
test1=$(echo "${LOAD_1} > 2.0" | bc -l)
test2=$(echo "${LOAD_2} > 2.0" | bc -l)
test3=$(echo "${LOAD_3} > 2.0" | bc -l)
echo $test1
echo $test2
echo $test3
if [ "$test1" -gt 0 ] || [ "$test2" -gt 0 ] || [ "$test3" -gt 0 ]
then
echo -e "load on ${SERVER_NAME[1]} is getting high
\naverage loads are at "$LOAD_1" "$LOAD_2" "$LOAD_3"
\nDate: ${DATUM}" | mail -s "load on host1 is getting high" $ADMIN_EMAIL
fi
exit 0
TERM environment variable not set.
TERM environment variable not set.
TERM environment variable not set.
(standard_in) 1: parse error
(standard_in) 1: parse error
(standard_in) 1: parse error
/server/scripts/check_load.sh: line 25: [: : integer expression expected
/server/scripts/check_load.sh/check_load.sh: line 25: [: : integer expression expected
/server/scripts/check_load.sh/check_load.sh: line 25: [: : integer expression expected
vielen Dank
EDIT: hab das ganze mal mit cat /proc/loadavg angefangen sollte die top fehler beheben