J
Jere
Grünschnabel
Hallo zusammen,
ich habe ein Problem mit einem selbstgebauten Script.
Edit 10:26: Pardon, es handelt sich um ein HP-UX Release B.11.23 U ia64.
Was es machen soll:
- Schreibt den aktuellen Load Average in $LOGFILE
- Prüft, ob der ausgelesene Wert (z.B. 2.44) gleich oder größer ist als $NOTIFY (1.00)
- Wenn das wahr ist, dann schreibt er in $LOGFILE2 das Ergebnis vom top-Kommando
- Wiederholt, bis ich in der Shell manuell abbreche. Das ganze stellt nur ein temporäres "Überwachen" dar.
Was es tatsächlich tut:
Alles, außer die Prüfung $AVNOW >= $NOTIFY und damit das schreiben des top-Kommandos sofern die CPU ausgelastet wird.
Nur in das $LOGFILE schreibt er brav wie geplant mit den entsprechenden ausgelesenen Werten:
Thu Sep 29 14:40:26 METDST 2011 Aktueller Wert: 1.07
Thu Sep 29 14:40:29 METDST 2011 Aktueller Wert: 1.07
Thu Sep 29 14:40:32 METDST 2011 Aktueller Wert: 1.04
[...]
Fehlermeldung auf der Shell:
./check_cpu_load.sh: line 26: [: 0.91: unary operator expected
(Die Zahl ändert sich natürlich, die Meldung als solches bleibt bei jedem Aufruf gleich)
Was habe ich bereits gemacht:
- Den Test in der if von "-ge" auf ">=" gesetzt, weil ich nicht mit integer arbeiten kann.
- Die Abfragewerte in Häkchen gesetzt, Leerzeichen in der if-Test-Abfrage kontrolliert. Deshalb auch dieser Post - die Antworten, die ich zu dieser Fehlermeldung gefunden habe, referenzieren nur auf leere Variablen. In diesem Fall wird sie doch aber mitgegeben, wie mir das echo zeigt? Vielleicht trage ich auch die falsche Brille und fokussiere mich nicht genug? -->
- Echos eingebaut (unmittelbar vor und nach dem if ein "echo "$AVNOW $NOTIFY"", so das mir der Wert aus AVNOW und NOTIFY ausgegeben wird.
Ergebnis: n.nn (der jeweils aktuelle Wert in richtiger Form) und 1.00, der ja bereits oben deklariert wurde).
Hier meine relevanten Codezeilen, ein paar Sachen habe ich weggelassen wie z.B. die LOGFILE Deklarationen:
Wieso taucht es auf, und was kann ich dagegen unternehmen?
Vielen Dank!
ich habe ein Problem mit einem selbstgebauten Script.
Edit 10:26: Pardon, es handelt sich um ein HP-UX Release B.11.23 U ia64.
Was es machen soll:
- Schreibt den aktuellen Load Average in $LOGFILE
- Prüft, ob der ausgelesene Wert (z.B. 2.44) gleich oder größer ist als $NOTIFY (1.00)
- Wenn das wahr ist, dann schreibt er in $LOGFILE2 das Ergebnis vom top-Kommando
- Wiederholt, bis ich in der Shell manuell abbreche. Das ganze stellt nur ein temporäres "Überwachen" dar.
Was es tatsächlich tut:
Alles, außer die Prüfung $AVNOW >= $NOTIFY und damit das schreiben des top-Kommandos sofern die CPU ausgelastet wird.
Nur in das $LOGFILE schreibt er brav wie geplant mit den entsprechenden ausgelesenen Werten:
Thu Sep 29 14:40:26 METDST 2011 Aktueller Wert: 1.07
Thu Sep 29 14:40:29 METDST 2011 Aktueller Wert: 1.07
Thu Sep 29 14:40:32 METDST 2011 Aktueller Wert: 1.04
[...]
Fehlermeldung auf der Shell:
./check_cpu_load.sh: line 26: [: 0.91: unary operator expected
(Die Zahl ändert sich natürlich, die Meldung als solches bleibt bei jedem Aufruf gleich)
Was habe ich bereits gemacht:
- Den Test in der if von "-ge" auf ">=" gesetzt, weil ich nicht mit integer arbeiten kann.
- Die Abfragewerte in Häkchen gesetzt, Leerzeichen in der if-Test-Abfrage kontrolliert. Deshalb auch dieser Post - die Antworten, die ich zu dieser Fehlermeldung gefunden habe, referenzieren nur auf leere Variablen. In diesem Fall wird sie doch aber mitgegeben, wie mir das echo zeigt? Vielleicht trage ich auch die falsche Brille und fokussiere mich nicht genug? -->
- Echos eingebaut (unmittelbar vor und nach dem if ein "echo "$AVNOW $NOTIFY"", so das mir der Wert aus AVNOW und NOTIFY ausgegeben wird.
Ergebnis: n.nn (der jeweils aktuelle Wert in richtiger Form) und 1.00, der ja bereits oben deklariert wurde).
Hier meine relevanten Codezeilen, ein paar Sachen habe ich weggelassen wie z.B. die LOGFILE Deklarationen:
Code:
NOTIFY='1.00'
FTEXT='load average: '
while [ 1 ]
do
sleep 3
AVNOW="$(uptime | awk -F "$FTEXT" '{ print $2 }' | cut -d, -f1)"
echo "`date` Aktueller Wert: $AVNOW" >> $LOGFILE
if [ "$AVNOW" >= "$NOTIFY" ];
then
top -w -s 1 -d 10 -n 15 >> $LOGFILE2
fi
done
Wieso taucht es auf, und was kann ich dagegen unternehmen?
Vielen Dank!
Zuletzt bearbeitet: