Ausgabe in eine Datei

Bash, Shell, PHP, Python, Perl, CGI
dani_ch
Posts: 79
Joined: 2003-03-23 17:42

Ausgabe in eine Datei

Post by dani_ch » 2005-07-09 20:28

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.

bungeebug
Posts: 187
Joined: 2004-04-14 10:08

Re: Ausgabe in eine Datei

Post by bungeebug » 2005-07-09 20:31

Wie immer solltest du absolute Pfadangaben benutzen.

dani_ch
Posts: 79
Joined: 2003-03-23 17:42

Re: Ausgabe in eine Datei

Post by dani_ch » 2005-07-09 20:33

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.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Ausgabe in eine Datei

Post by Joe User » 2005-07-09 20:57

Ich kann es gerade nicht selbst testen, aber eventuell hilft:

Code: Select all

echo -e "User: $PUSERn"
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Ausgabe in eine Datei

Post by flo » 2005-07-09 22:21

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.

dani_ch
Posts: 79
Joined: 2003-03-23 17:42

Re: Ausgabe in eine Datei

Post by dani_ch » 2005-07-10 00:38

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.

dani_ch
Posts: 79
Joined: 2003-03-23 17:42

Re: Ausgabe in eine Datei

Post by dani_ch » 2005-07-10 00:39

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?

antondollmaier
Posts: 485
Joined: 2004-03-30 10:06

Re: Ausgabe in eine Datei

Post by antondollmaier » 2005-07-10 00:44

uptime und dann umrechnen?

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Ausgabe in eine Datei

Post by flo » 2005-07-10 05:11

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.

dani_ch
Posts: 79
Joined: 2003-03-23 17:42

Re: Ausgabe in eine Datei

Post by dani_ch » 2005-07-10 09:31

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.

dani_ch
Posts: 79
Joined: 2003-03-23 17:42

Re: Ausgabe in eine Datei

Post by dani_ch » 2005-07-10 09:41

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.

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Ausgabe in eine Datei

Post by flo » 2005-07-10 09:45

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.

dani_ch
Posts: 79
Joined: 2003-03-23 17:42

Re: Ausgabe in eine Datei

Post by dani_ch » 2005-07-10 09:48

Diese müssten doch bei der Initialisierung der Shell gesetzt werden?

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Ausgabe in eine Datei

Post by Joe User » 2005-07-10 14:55

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
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

dani_ch
Posts: 79
Joined: 2003-03-23 17:42

Re: Ausgabe in eine Datei

Post by dani_ch » 2005-07-10 21:39

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. :-(