PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ergebnisse von "TOP" in Datei speichern!



frabovmeier
11.03.10, 11:23
Hallo,

wie kann ich die Ausgabe vom Befehl "TOP" in eine Datei speichern?

Ich will das in einem Zeitraum von 10 Minuten, jede einzelne aktualisierte Ausgabe von TOP in eine extra Datei gespeichert wird, bz. eine Datei und die Ausgabe immer wieder angehangen wird.

Mein Server hängt sich immer um 0 Uhr auf, und ich muss wissen, welche Prozesse da grad laufen, und wie die speicherauslastung ist!

Danke!

Iluminat23
11.03.10, 11:31
du suchst ps

ps aux >> file
hängt die ausgaben von ps immer unten an das ende von file an

gruß iluminat23

frabovmeier
11.03.10, 11:45
Ok...habs...

ich log ab 23:55 10 Minuten die Top ausgabe so mit:


/usr/bin/top -b -n 200 -d 1 > "/top-`date`"


Gibt es für PS auf so ein Intervall wie bei TOP???

int 80h
11.03.10, 11:59
#!/bin/bash

echo "+Starting top -b..."
top -b >> /home/user/toplog & #top in toplog, & -> im hintergrund
echo "+PID of top " $!
echo "+Waiting..."
sleep 600 #10 * 60 sek warten
echo "+Killing top..."
kill $!


Sowas?

Freundliche Grüße,
int 80h

Edit:// Zu spät. -.-

Rain_maker
11.03.10, 12:15
#!/bin/bash

echo "+Starting top -b..."
top -b >> /home/user/toplog & #top in toplog, & -> im hintergrund
echo "+PID of top " $!
echo "+Waiting..."
sleep 600 #10 * 60 sek warten
echo "+Killing top..."
kill $!



Hm, ich bin mir nicht 100%ig sicher, aber da könnte ein kleiner Denkfehler drin sein, das $! bezieht sich doch AFAIK auf den _letzten_ Befehl, ergo würde das so wohl nicht top killen sondern das letzte echo (welches dann eh schon beendet wäre).

So müsste das "todsicher" sein:


#!/bin/bash

echo "+Starting top -b..."
top -b >> /home/user/toplog & #top in toplog, & -> im hintergrund
pid_of_top=$!
echo "+PID of top " $pid_of_top
echo "+Waiting..."
sleep 600 #10 * 60 sek warten
echo "+Killing top..."
kill $pid_of_top

int 80h
11.03.10, 12:28
Das dachte ich auch erst, habe es dann getestet:

[~/tmp/testdir] $ cat pid.sh
#!/bin/bash

echo "+Starting top -b..."
echo "Debug: " $!
top -b >> /home/user/toplog & #top in toplog, & -> im hintergrund
echo "+PID of top " $!
echo "Debug: " $!
echo "+Waiting..."
echo "Debug: " $!
sleep 10 #10 * 60 sek warten
echo "Debug: " $!
echo "+Killing top..."
echo "Debug: " $!
kill $!
echo "Debug: " $!
[~/tmp/testdir] $ ./pid.sh
+Starting top -b...
Debug:
+PID of top 25872
Debug: 25872
+Waiting...
Debug: 25872
Debug: 25872
+Killing top...
Debug: 25872
Debug: 25872


Verwechselst du eventuell $! mit $? (Rückgabe des vorhergehenden Befehls) ?

Freundliche Grüße,
int 80h :)

Rain_maker
11.03.10, 12:30
Verwechselst du eventuell $! mit $? (Rückgabe des vorhergehenden Befehls) ?


Jo

*hmpf*

(Im startup-Script von fluxbox wird da genau der selbe "Trick" angewandt -nur daher fiel mir das ein/auf- aber da steht natürlich auch $? und nicht $!)

//Edit:

Nee, doch nicht:



---- snip -----
#exec fluxbox
# or if you want to keep a log:
# exec fluxbox -log "~/.fluxbox/log"
/usr/bin/fluxbox -log "~/.fluxbox/log" &
fbpid=$!

# wait for fluxbox to actually get going by sleeping for 1 second (modify as needed)
sleep 2
# Applications that need to have fluxbox already running
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN & AT THE END.
#
# gkrellm &
# gdesklets &
# gxmms2 &
----- snip -----

wait $fbpid
fbstatus=$?
Nur da ist es notwendig, weil/damit dann anschließend noch weitere Prozesse gestartet und mit "&" in den Hintergrund geschoben werden (können), was bei Deinem Script ja nicht der Fall und auch nicht notwendig ist.