Wie kann ich die Zeit über die Befehlszeile verfolgen?

11

Ich suche nach einem Befehl, um die Zeit zu verfolgen.

Ich stelle mir folgenden Workflow vor:

  1. Führen Sie den Befehl aus
  2. ...mach etwas anderes...
  3. Kehren Sie zum Terminalfenster zurück und stoppen Sie den Befehl
  4. Als Ausgabe erhalten Sie die zwischen 3 und 1 verstrichene Zeit
Orschiro
quelle
@JacobVlijm Ich mag die Klarheit von Anwars Antwort unten sehr. Als nicht-technischer Benutzer ist es einfacher zu verstehen, dass die Antworten im möglichen doppelten Thread vorliegen. Was denkst du?
Orschiro
2
@JacobVlijm Ich denke nicht, dass dies ein Duplikat ist. Das OP hier fragt nach einer Stoppuhr, die Frage dort, wie die Prozessausführungszeit gemessen werden kann.
Seth
@ Seth ok, Abstimmung zurückgezogen.
Jacob Vlijm
@ Eric hast du meinen Kommentar oben gelesen?
Seth

Antworten:

6

Wie wäre es mit:

stopwatch() { 
    local start=$SECONDS
    read -p "Hit Enter..."
    echo $((SECONDS-start)) seconds elapsed
}

In Aktion:

$ stopwatch 
Hit Enter...
14 seconds elapsed
Glenn Jackman
quelle
3

Eine einfache Möglichkeit besteht darin, sich die Startzeit zu nehmen. Wenn Sie das Skript gestoppt haben, nehmen Sie sich die Stoppzeit. Drucken Sie abschließend den Zeitunterschied aus. Dies kann leicht mit Python gemacht werden:

python -c $'import time;start=time.time();\ntry:\n\twhile True: time.sleep(0.25)\nexcept: print(time.time()-start)'

Oder lange Version zur besseren Lesbarkeit:

import time
start=time.time();
try:
    while True: time.sleep(0.25)
except: 
    print(time.time()-start)

Das Anhalten erfolgt mit Strg + C.

Sergiy Kolodyazhnyy
quelle
1
while True: passLäuft die CPU zu 100%. Ich würde while True: time.sleep(1e9)stattdessen vorschlagen ( signal.pause()funktioniert auch, erfordert aber einen zusätzlichen Import).
2012rcampion
@ 2012rcampion guter Punkt, bearbeitet das schon in.
Sergiy Kolodyazhnyy
1
Es wird normalerweise als schlechte Praxis angesehen, alle Ausnahmen zu fangen (obwohl es in diesem Fall wahrscheinlich nicht zu relevant ist), except KeyboardInterruptwäre besser
Tobias Kienzler
3
@TobiasKienzler Das ist mir bewusst. Wenn dies ein großes Projekt ist, teile ich Dinge, um mehrere Ausnahmen abzufangen. Fühlen Sie sich frei, meinen anderen Code, Indikatoren und so weiter anzusehen. In diesem Fall gibt es jedoch nur einen, der nicht genau relevant ist. Außerdem ist dies ein schneller und schmutziger Weg. Warum nicht leicht Golf spielen?
Sergiy Kolodyazhnyy
Ich stimme voll und ganz zu, dachte nur, dass es erwähnenswert ist;)
Tobias Kienzler