1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Dauer eines Befehls messen/stoppen mit "time"

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von mod_che, 05.03.10.

  1. mod_che

    mod_che Morgenduft

    Dabei seit:
    06.03.07
    Beiträge:
    164
    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
     
  2. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Dann lies doch mal die Manpage
    Code:
    man time
    Es lassen sich via Option [tt]-f[/tt] (statt [tt]-p[/tt]) beliebige Ausgabeformate definieren.
     
  3. mod_che

    mod_che Morgenduft

    Dabei seit:
    06.03.07
    Beiträge:
    164
    habe ich, da sind nur die optionen -l und -p aufgeführt. -f kennt time nicht.
     
  4. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Ups, sorry, ich war unter Linux unterwegs. Da funktioniert die BSD-Version von [tt]time[/tt] wohl wieder anders als die GNU-Variante. Warte mal kurz...
     
  5. mod_che

    mod_che Morgenduft

    Dabei seit:
    06.03.07
    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)
     
  6. NobiMan

    NobiMan Osnabrücker Reinette

    Dabei seit:
    08.09.09
    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.
     
  7. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Das geht deshalb nicht, weil [tt]time[/tt] seine Ausgabe in die Standardfehlerausgabe [tt]stderr[/tt] schreibt und nicht in die Standardausgabe [tt]stdout[/tt]. Du musst vorher umleiten, etwa so:
    Code:
    (time -p echo "hallo") 2>&1 | grep "real"
     
  8. mod_che

    mod_che Morgenduft

    Dabei seit:
    06.03.07
    Beiträge:
    164
    habs! danke dir.
    Code:
    starttime=$(date +%s)
    ...
    echo -e "\t Download file xyz in "$[$(date +%s)-$starttime] "second(s).\n"
    
    
     
  9. NobiMan

    NobiMan Osnabrücker Reinette

    Dabei seit:
    08.09.09
    Beiträge:
    978
    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!!!
     
  10. mod_che

    mod_che Morgenduft

    Dabei seit:
    06.03.07
    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.
     
  11. NobiMan

    NobiMan Osnabrücker Reinette

    Dabei seit:
    08.09.09
    Beiträge:
    978
    Uups ! Hab das kleine "s" als grosses interpretiert :) Somit hast Du völlig recht!
     

Diese Seite empfehlen