Page 1 of 1

Ausgabe in eine Datei

Posted: 2005-07-09 20:28
by dani_ch
Hallo zusammen

Ich habe folgendes Skript gemacht:

Code: Select all

 #!/bin/sh - 
read x x PUSER x PNICE x PSYS x PINT x PIDLE x <<daer
$(top -n1  | grep "CPU states:")
daer
echo "User: $PUSER"
echo "Nice: $PNICE"
echo "System: $PSYS"
echo "Interrupt: $PINT"
echo "Idle: $PIDLE" 
echo $PINT > /home/admin/idle.txt
Wenn ich das als root aufrufe, steht in idle.txt etwas, nämlich die Variable $PINT. Nun habe ich dieses Script als Cronjob eingerichtet, damit es vollautomatisch aufgerufen wird. Der Eintrag lautet wie folgt:

Code: Select all

*/1 * * * * root /home/admin/load.sh
Das Script wird auch aufgerufen und die Datei idle.txt erstellt. Aber die Datei ist einfach leer. Die Daten der Variable $PINT sind nicht drin.

Kann mir jemand sagen, wo da der Fehler liegt?

Besten Dank.

Re: Ausgabe in eine Datei

Posted: 2005-07-09 20:31
by bungeebug
Wie immer solltest du absolute Pfadangaben benutzen.

Re: Ausgabe in eine Datei

Posted: 2005-07-09 20:33
by dani_ch
hmm, habe ich bei top / grep nicht gemacht. aber auch nach der korrektur ist noch dasselbe problem vorhanden!!

und wenn ich vor echo auch noch /usr/bin/ stelle, dann ist die datei komplett leer, nicht mal mehr ein leerschlag drin.

Re: Ausgabe in eine Datei

Posted: 2005-07-09 20:57
by Joe User
Ich kann es gerade nicht selbst testen, aber eventuell hilft:

Code: Select all

echo -e "User: $PUSERn"

Re: Ausgabe in eine Datei

Posted: 2005-07-09 22:21
by flo

Code: Select all

top -n1  | grep "CPU states:"
Bei mir kommt da überhaupt keine Ausgabe - wonach suchst Du?

Eventuell:

Code: Select all

top -n1  | grep "Cpu(s)"

flo.

Re: Ausgabe in eine Datei

Posted: 2005-07-10 00:38
by dani_ch
Joe User wrote:Ich kann es gerade nicht selbst testen, aber eventuell hilft:

Code: Select all

echo -e "User: $PUSERn"
hat leider auch nichts gebracht... :-(

wie gesagt, komisch ist, dass es klappt, wenn ich es als root manuell ausführe. sobald es aber als cronjob (unter dem user root) ausgeführt wird, klappt es nicht.

Re: Ausgabe in eine Datei

Posted: 2005-07-10 00:39
by dani_ch
oder hat allenfalls jemand sonst eine idee, wie man die auslastung des cpus mittels cronjob in eine datei schreiben könnte?

also das in der datei beispielsweise 32% steht oder so?

Re: Ausgabe in eine Datei

Posted: 2005-07-10 00:44
by antondollmaier
uptime und dann umrechnen?

Re: Ausgabe in eine Datei

Posted: 2005-07-10 05:11
by flo
Dani_CH wrote:oder hat allenfalls jemand sonst eine idee, wie man die auslastung des cpus mittels cronjob in eine datei schreiben könnte?

also das in der datei beispielsweise 32% steht oder so?
Also, ich weiß nicht, wo bei Ausgabe von top "CPU States" stehen soll, aber nun gut - probier doch mal

Code: Select all

cat /proc/loadavg
Damit sparst Du Dir schon mal top.

flo.

Re: Ausgabe in eine Datei

Posted: 2005-07-10 09:31
by dani_ch
Loadavg ist bei mir eben leider leer...vermutlich, weil es ein VServer ist. Daher bringt mir das leider nichts.

Habe nun gerade eine andere Variante versucht. Und zwar habe ich in einer Batch-Datei einfach folgendes geschrieben:

Code: Select all

/usr/bin/top -n1 > /home/idle.txt
Also ohne irgendwie die Bash zu verwenden und Daten auszulesen. Das Resultat ist dasselbe. Wenn ich es manuell als Root ausführe, klappts. Und wenn ich es als Cronjob ausführe, ist das File leer.

Komische Sache.

Re: Ausgabe in eine Datei

Posted: 2005-07-10 09:41
by dani_ch
antondollmaier wrote:uptime und dann umrechnen?
kannst du mir sagen, wie ich die uptime umrechnen kann? denn wenn ich diese ausgeben lasse, ist das file nicht leer! würde also klappen.

Re: Ausgabe in eine Datei

Posted: 2005-07-10 09:45
by flo
Dani_CH wrote: Also ohne irgendwie die Bash zu verwenden und Daten auszulesen. Das Resultat ist dasselbe. Wenn ich es manuell als Root ausführe, klappts. Und wenn ich es als Cronjob ausführe, ist das File leer.
top braucht gesetzte TERM-Umgebungsvariablen, um seine Ausgabe zu erzeugen.

flo.

Re: Ausgabe in eine Datei

Posted: 2005-07-10 09:48
by dani_ch
Diese müssten doch bei der Initialisierung der Shell gesetzt werden?

Re: Ausgabe in eine Datei

Posted: 2005-07-10 14:55
by Joe User
Dani_CH wrote:Diese müssten doch bei der Initialisierung der Shell gesetzt werden?
Nein, nicht zwangsläufig: /bin/sh != /bin/bash (man bash)
Setze mal Folgendes an den Anfang des Cronfiles und lösche die erste Zeile:

Code: Select all

SHELL=/bin/bash
TERM=xterm

Re: Ausgabe in eine Datei

Posted: 2005-07-10 21:39
by dani_ch
Joe User wrote:Setze mal Folgendes an den Anfang des Cronfiles und lösche die erste Zeile:
hmm, hat leider nichts gebracht, das file ist noch immer leer. :-(