Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11
  1. #1
    Morgenduft
    Themenstarter

    Registriert
    03.2007
    Beiträge
    164

    Dauer eines Befehls messen/stoppen mit "time"

    Hallo.
    Ich habe ein bash-Shell-Script geschrieben (aufm Mac fürs Terminal), welches aus einer Textdatei Dateinamen zeilenweise liest und diese dann durch den Aufruf eines Java-Scripts von einem Server runterlädt. Das klappt auch, der Aufruf des JAva Scripts folgt in einer Schleife, solange in liste.txt noch Zeilen sind sozusagen. Das klappt auch. Ich hätte gerne eine Anzeige, wie lange ein Schliefendurchgang = einmal Aufruf des Java Scripts = 1 Download dauert. Die Dateien sind nämlich unterschiedlich groß.

    Ich habe dem Aufruf ein
    Code:
    time -p
    vorangestellt, misst auch die Zeit, aber die Ausgabe ist immer real x.xxx user x.xxxx und sys x.xxxx und ich will nur real mm:ss haben, den Rest nicht. Pipes funktionieren bei time ja nicht. Wie kann ich das lösen? Schluss endlich will ich die zu erwartende Downloadzeit aus der bisher durchschnittlichen Downloadzeit für alle schon heruntergeladenen Dateien und der Anzahl der noch zu ladenden Dateien (Anzahl und Counter habe ich schon) ermitteln.

    Danke und Grüße
    Kind des Netzes.

  2. #2
    Hadelner Sommerprinz Avatar von quarx
    Registriert
    04.2005
    Ort
    Budenheim
    Alter
    36
    Beiträge
    8.528
    Dann lies doch mal die Manpage
    Code:
    man time
    Es lassen sich via Option -f (statt -p) beliebige Ausgabeformate definieren.
    Wer A sagt, muss auch Rev. B sagen.
    AT-Bingo: #01 | #02 | #03 | #04 | #05 | #06

  3. #3
    Morgenduft
    Themenstarter

    Registriert
    03.2007
    Beiträge
    164
    habe ich, da sind nur die optionen -l und -p aufgeführt. -f kennt time nicht.
    Kind des Netzes.

  4. #4
    Hadelner Sommerprinz Avatar von quarx
    Registriert
    04.2005
    Ort
    Budenheim
    Alter
    36
    Beiträge
    8.528
    Ups, sorry, ich war unter Linux unterwegs. Da funktioniert die BSD-Version von time wohl wieder anders als die GNU-Variante. Warte mal kurz...
    Wer A sagt, muss auch Rev. B sagen.
    AT-Bingo: #01 | #02 | #03 | #04 | #05 | #06

  5. #5
    Morgenduft
    Themenstarter

    Registriert
    03.2007
    Beiträge
    164
    Kein Problem, bin für Hilfe dankbar und warte auch gerne kurz Ich dachte eben auch, dass ich mir via (|) nur die "real"-Zeile rausgeben lassen könnte, aber das funktioniert nicht. Schlussendlich will ich nur den Sekundenwert für die Dauer der Befehlsausführung (=1 Download)
    Kind des Netzes.

  6. #6
    Osnabrücker Reinette Avatar von NobiMan
    Registriert
    09.2009
    Ort
    Wolfenbüttel, Germany
    Alter
    51
    Beiträge
    978
    Code:
    date "+%M:%S"
    Den Ausgabewert jeweils vor und nach dem Aufruf des Skripts in je eine Variable schreiben und mittels expr die Differenz berechnen, sollte das tun was Du möchtest.
     iMac 27", 2.93 GHz Core I7, 8GB, 10.7.2  MacMini 2.0 GHz Core 2 Duo, 4GB, 10.6.8
     Iphone 4s, 16GB, 5.0  iPad, 64GB WiFi, 5.0

  7. #7
    Hadelner Sommerprinz Avatar von quarx
    Registriert
    04.2005
    Ort
    Budenheim
    Alter
    36
    Beiträge
    8.528
    Zitat Zitat von mod_che Beitrag anzeigen
    Ich dachte eben auch, dass ich mir via (|) nur die "real"-Zeile rausgeben lassen könnte, aber das funktioniert nicht.
    Das geht deshalb nicht, weil time seine Ausgabe in die Standardfehlerausgabe stderr schreibt und nicht in die Standardausgabe stdout. Du musst vorher umleiten, etwa so:
    Code:
    (time -p echo "hallo") 2>&1 | grep "real"
    Wer A sagt, muss auch Rev. B sagen.
    AT-Bingo: #01 | #02 | #03 | #04 | #05 | #06

  8. #8
    Morgenduft
    Themenstarter

    Registriert
    03.2007
    Beiträge
    164
    habs! danke dir.
    Code:
    starttime=$(date +%s)
    ...
    echo -e "\t Download file xyz in "$[$(date +%s)-$starttime] "second(s).\n"
    Kind des Netzes.

  9. #9
    Osnabrücker Reinette Avatar von NobiMan
    Registriert
    09.2009
    Ort
    Wolfenbüttel, Germany
    Alter
    51
    Beiträge
    978
    Zitat Zitat von mod_che Beitrag anzeigen
    habs! danke dir.
    Code:
    starttime=$(date +%s)
    ...
    echo -e "\t Download file xyz in "$[$(date +%s)-$starttime] "second(s).\n"
    Ausser: Der Download beginnt zur Sekunde 59 und endet zur Sekunde 03.
    Da kommt dann Quatsch raus, den date +%s gibt die aktuelle Sekunde der aktuellen Minute aus!!!
     iMac 27", 2.93 GHz Core I7, 8GB, 10.7.2  MacMini 2.0 GHz Core 2 Duo, 4GB, 10.6.8
     Iphone 4s, 16GB, 5.0  iPad, 64GB WiFi, 5.0

  10. #10
    Morgenduft
    Themenstarter

    Registriert
    03.2007
    Beiträge
    164
    Nein, der Befehl gibt die Anzahl der Sekunden von einem Startdatum aus an, ziemlich sicher. Nimmt zumindest keine Werte zwischen 0 und 60 an.
    Kind des Netzes.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •