Zeit messen.

cat1510

Well-Known Member
Hallo Leutz,

ich habe ein sh script und moechte wissen, wie lang es gelaufen ist.
Das soll am Ende des Scriptes in das Logfile geschrieben werden.

mit /usr/bin/time -h kann man das script zwar aufrufen, ich wuerde aber gern innerhalb des Scriptes die Zeit messen.

mit Date die Uhrzeit am Anfang des Scriptes zu messen und am Ende, davon das Delta ausgeben lassen, habe ich nicht hinbekommen.

Vieleicht hat jemand von Euch eine Idee oder einen Tip fuer mich.

Danke.



CAT
 
[moR-pH-euS] schrieb:
time ist doch für sowas prädestiniert, wieso willst du es so umständlich machen?
Weil er die dauer seines Scripts innerhalb seines Scripts messen möchte

Wie wäre es hier mit?
Code:
START=`date +%s`
# ...
# ...
# ...
ENDE=`date +%s`
TIME=`echo $ENDE - $START | bc`
# in $TIME ist jetzt die Dauer die das Script zur ausführung benötigt hat in Sekunden
echo $TIME
date -r $TIME +"%M:%S" # Sekunden wieder umrechnen (optional)
Das ganz ist dann aber nur Sekunden ganu.

Wenn es ein Perl Script ist, dann könntest du die times() Funktion nutzen.
 
Ist ja supergenial.

Genauso habe ich mir das gedacht.
Bin mit der Man Page aber leider nicht zurechtgekommen.

Also wenn ich das richtig verstanden habe.

date +%s gibt die Anzahl von Sekunden seit dem 1.Januar 1970 an oder?

und dann spaeter das gleiche Kommando, um es voneinander zu subtrahieren.


Danke fuer die schnelle Hilfe.


CAT
 
Das misst dann aber die wall time, und die ist meistens eigentlich uninteressant. Also entweder getrusage(2) verwenden, oder im Skript forken und time(1) auf die Subshell loslassen.
 
was bitte ist denn eine wall time?

Er misst doch aber die effektiv gebrauchte Zeit oder habe ich kein Zeitgefuehl? ;)


CAT
 
wall clock ist die Uhr, die an der Wand haengt. Als "real time". Bei Rechenintensiven Sachen will man aber zB die user time oder system time wissen, nicht nur die real time.

Frage: Was kommen fuer Zeiten bei: 'time sleep 60' raus?
 
[root@test]/usr/temp# /usr/bin/time -h sleep 60
1m0.00s real 0.00s user 0.00s sys
[root@test]/usr/temp#


habe mal ein -h eingefuegt und nicht das in der Shell eingebaut benutzt.

OK das weiss ich schon. Aber fuer mich ist einfach nur interessant, wie lang das Script laeuft. Wieviel Auslastung nun wer erzeugt ist mir in diesem Falle ganz egal.
Aber danke. Ich kann offensichtlich noch eine Menge ueber Zeit lernen.


CAT
 
cat1510 schrieb:
Kannste das mal ein bisschen ausfuehren?
date(1) verwendet strftime(3), und da ist %s eine Extension (also nicht POSIX). Du wirst also mit einem Script, das date +%s verwendet, frueher oder spaeter auf die Nase fallen, wenn das Ding beispielsweise mal auf Solaris angeworfen wird.

Miit dem Shell-Builtini "times" bist Du hier auf der sicheren Seite, vorausgesetzt, die verwendet Shell ist einigermassen POSIX-konform.
 
damit kann ich aber nichts anfangen...

[root@test]/usr# time
3422.265u 1906.993s 23:19:26.70 6.3% 74+627k 2593402+298378io 600pf+0w
[root@test]/usr#

wie soll ich das denn innerhalb des Scriptes verwenden?
Welchen der Werte soll ich denn benutzen?:zitter: :confused: :eek:

laeuft uebrigens in sh shell...


CAT
 
Zurück
Oben