Hallo CentOS-Freunde,
mein Problem hat bestimmt nichts mit CentOS zutun, aber Fragen kann man ja, oder?
Nachstehend ist eine sehr einfache bash, die bei manueller Ausführung wunderbar funktioniert, aber im cronjob werden nur die Temperaturen der Festplatten angezeigt.
[root@ ~]# crontab -l */5 * * * * /usr/local/sbin/temperatur oder */5 * * * * root /usr/local/sbin/temperatur
zeigen das gleiche Ergebnis.
#!/bin/bash
# Sinn dieser Bash: # einfacher Temp-Überblick
# 2.6.18-274.12.1.el5 #1 SMP Tue Nov 29 13:37:46 EST 2011 x86_64 x86_64 x86_64 GNU/Linux # sensors # k10temp-pci-00c3 # Adapter: PCI adapter # temp1: +38°C
DB_Name=/var/www/html/Ralf/rrd/`basename "$0" .sh`.rrd Grafik=/var/www/html/Ralf/rrd/`basename "$0" .sh`.png
if [ ! -f $DB_Name ]; then /usr/bin/rrdtool create $DB_Name --step 300 \ DS:TEMP_CPU:GAUGE:600:U:U \ DS:TEMP_SDA:GAUGE:600:U:U \ DS:TEMP_SDD:GAUGE:600:U:U \ RRA:AVERAGE:0.5:1:2160 \ RRA:AVERAGE:0.5:5:2016 \ RRA:AVERAGE:0.5:15:2880 \ RRA:AVERAGE:0.5:60:8760 fi
# Um diese Zeile dreht sich mein Problem: TEMP_CPU=$(sensors | tail -n2 | cut -d'+' -f2 | \ cut -d'C' -f1 | cut -d'°' -f1)
TEMP_SDA=$(hddtemp -n /dev/sdc) TEMP_SDD=$(hddtemp -n /dev/sdd)
/usr/bin/rrdtool update $DB_Name N:$TEMP_CPU:$TEMP_SDA:$TEMP_SDD
nice -n 19 rrdtool graph $Grafik \ -a PNG \ -t "Temperatur in °C $HOSTNAME" \ -v "`date +%d.%m.%Y-%H:%M`" \ --zoom 2 \ DEF:TEMP_CPU=$DB_Name:TEMP_CPU:AVERAGE \ DEF:TEMP_SDA=$DB_Name:TEMP_SDA:AVERAGE \ DEF:TEMP_SDD=$DB_Name:TEMP_SDD:AVERAGE \ LINE1:TEMP_CPU#FF0000:"CPU = $TEMP_CPU" \ LINE1:TEMP_SDA#00FF00:"SDC = $TEMP_SDA" \ LINE1:TEMP_SDD#0000FF:"SDD = $TEMP_SDD" \
/dev/null
Am 28.01.2012 16:14, schrieb Wolfgang:
Hallo CentOS-Freunde,
mein Problem hat bestimmt nichts mit CentOS zutun, aber Fragen kann man ja, oder?
Nachstehend ist eine sehr einfache bash, die bei manueller Ausführung wunderbar funktioniert, aber im cronjob werden nur die Temperaturen der Festplatten angezeigt.
[root@ ~]# crontab -l */5 * * * * /usr/local/sbin/temperatur oder */5 * * * * root /usr/local/sbin/temperatur
Diese Zeile ist schlichtweg falsch. In eine User crontab gehört keine User Spalte.
zeigen das gleiche Ergebnis.
#!/bin/bash
# Sinn dieser Bash: # einfacher Temp-Überblick
# 2.6.18-274.12.1.el5 #1 SMP Tue Nov 29 13:37:46 EST 2011 x86_64 x86_64 x86_64 GNU/Linux # sensors # k10temp-pci-00c3 # Adapter: PCI adapter # temp1: +38°C
DB_Name=/var/www/html/Ralf/rrd/`basename "$0" .sh`.rrd Grafik=/var/www/html/Ralf/rrd/`basename "$0" .sh`.png
if [ ! -f $DB_Name ]; then /usr/bin/rrdtool create $DB_Name --step 300 \ DS:TEMP_CPU:GAUGE:600:U:U \ DS:TEMP_SDA:GAUGE:600:U:U \ DS:TEMP_SDD:GAUGE:600:U:U \ RRA:AVERAGE:0.5:1:2160 \ RRA:AVERAGE:0.5:5:2016 \ RRA:AVERAGE:0.5:15:2880 \ RRA:AVERAGE:0.5:60:8760 fi
# Um diese Zeile dreht sich mein Problem: TEMP_CPU=$(sensors | tail -n2 | cut -d'+' -f2 | \ cut -d'C' -f1 | cut -d'°' -f1)
Hatte ich glaube ich schon mal als fürchterliche chain of pipes kritisiert.
TEMP_SDA=$(hddtemp -n /dev/sdc) TEMP_SDD=$(hddtemp -n /dev/sdd)
/usr/bin/rrdtool update $DB_Name N:$TEMP_CPU:$TEMP_SDA:$TEMP_SDD
Warum hier den absoluten Pfad zu rrdtool ...
nice -n 19 rrdtool graph $Grafik \
und hier dann ohne Pfadangabe?
-a PNG \ -t "Temperatur in °C $HOSTNAME" \ -v "`date +%d.%m.%Y-%H:%M`" \ --zoom 2 \ DEF:TEMP_CPU=$DB_Name:TEMP_CPU:AVERAGE \ DEF:TEMP_SDA=$DB_Name:TEMP_SDA:AVERAGE \ DEF:TEMP_SDD=$DB_Name:TEMP_SDD:AVERAGE \ LINE1:TEMP_CPU#FF0000:"CPU = $TEMP_CPU" \ LINE1:TEMP_SDA#00FF00:"SDC = $TEMP_SDA" \ LINE1:TEMP_SDD#0000FF:"SDD = $TEMP_SDD" \
/dev/null
Die Umgebung von cron ist recht rudimentär. Insbesondere ist $PATH eingeschränkt. Nutze absolute Pfade oder erweitere $PATH am Beginn des Scriptes.
Alexander
Hallo Wolfgang, gib Dir den Output mal in eine Datei aus.
z.B. "/usr/local/sbin/temperatur >> /tmp/temperatur.log"
Event. liegt es am tty, finde aber das Commando grad nicht.
Viele Grüße,
Matthias
On 01/28/2012 04:14 PM, Wolfgang wrote:
Hallo CentOS-Freunde,
mein Problem hat bestimmt nichts mit CentOS zutun, aber Fragen kann man ja, oder?
Nachstehend ist eine sehr einfache bash, die bei manueller Ausführung wunderbar funktioniert, aber im cronjob werden nur die Temperaturen der Festplatten angezeigt.
[root@ ~]# crontab -l */5 * * * * /usr/local/sbin/temperatur oder */5 * * * * root /usr/local/sbin/temperatur
zeigen das gleiche Ergebnis.
#!/bin/bash
# Sinn dieser Bash: # einfacher Temp-Überblick
# 2.6.18-274.12.1.el5 #1 SMP Tue Nov 29 13:37:46 EST 2011 x86_64 x86_64 x86_64 GNU/Linux # sensors # k10temp-pci-00c3 # Adapter: PCI adapter # temp1: +38°C
DB_Name=/var/www/html/Ralf/rrd/`basename "$0" .sh`.rrd Grafik=/var/www/html/Ralf/rrd/`basename "$0" .sh`.png
if [ ! -f $DB_Name ]; then /usr/bin/rrdtool create $DB_Name --step 300 \ DS:TEMP_CPU:GAUGE:600:U:U \ DS:TEMP_SDA:GAUGE:600:U:U \ DS:TEMP_SDD:GAUGE:600:U:U \ RRA:AVERAGE:0.5:1:2160 \ RRA:AVERAGE:0.5:5:2016 \ RRA:AVERAGE:0.5:15:2880 \ RRA:AVERAGE:0.5:60:8760 fi
# Um diese Zeile dreht sich mein Problem: TEMP_CPU=$(sensors | tail -n2 | cut -d'+' -f2 | \ cut -d'C' -f1 | cut -d'°' -f1)
TEMP_SDA=$(hddtemp -n /dev/sdc) TEMP_SDD=$(hddtemp -n /dev/sdd)
/usr/bin/rrdtool update $DB_Name N:$TEMP_CPU:$TEMP_SDA:$TEMP_SDD
nice -n 19 rrdtool graph $Grafik \ -a PNG \ -t "Temperatur in °C $HOSTNAME" \ -v "`date +%d.%m.%Y-%H:%M`" \ --zoom 2 \ DEF:TEMP_CPU=$DB_Name:TEMP_CPU:AVERAGE \ DEF:TEMP_SDA=$DB_Name:TEMP_SDA:AVERAGE \ DEF:TEMP_SDD=$DB_Name:TEMP_SDD:AVERAGE \ LINE1:TEMP_CPU#FF0000:"CPU = $TEMP_CPU" \ LINE1:TEMP_SDA#00FF00:"SDC = $TEMP_SDA" \ LINE1:TEMP_SDD#0000FF:"SDD = $TEMP_SDD" \
/dev/null
Hi Wolfgang,
Nachstehend ist eine sehr einfache bash, die bei manueller Ausführung wunderbar funktioniert, aber im cronjob werden nur die Temperaturen der Festplatten angezeigt.
[root@ ~]# crontab -l */5 * * * * /usr/local/sbin/temperatur oder */5 * * * * root /usr/local/sbin/temperatur
zeigen das gleiche Ergebnis.
Was kriegst Du denn zugemailt, wenn Du einfach nur /usr/bin/sensors in der Crontab eintraegst statt des vollen Skriptes?
[...]
# Um diese Zeile dreht sich mein Problem: TEMP_CPU=$(sensors | tail -n2 | cut -d'+' -f2 | \ cut -d'C' -f1 | cut -d'°' -f1)
Und Du bist ganz sicher, dass Deine CPU-Temperatur immer in den letzten zwei Zeilen steht? Solltest Du nicht lieber gleich nach der korrekten Zeile greppen?
frank