Jak mogę śledzić czas z wiersza poleceń?

11

Szukam polecenia do śledzenia czasu.

Wyobrażam sobie następujący przepływ pracy:

  1. Uruchom polecenie
  2. ...Zrób coś innego...
  3. Wróć do okna terminala i zatrzymaj polecenie
  4. Jako wynik otrzymasz czas, który upłynął między 3 a 1
orschiro
źródło
@JacobVlijm Bardzo podoba mi się klarowność odpowiedzi Anwara poniżej. Jako użytkownik nietechniczny łatwiej zrozumieć, że odpowiedzi w możliwym zduplikowanym wątku. Co myślisz?
orschiro,
2
@JacobVlijm Nie sądzę, że jest to duplikat. OP tutaj prosi o stoper, pytanie, jak mierzyć czas wykonywania procesu.
Seth
@Seth OK, głosowanie wycofane.
Jacob Vlijm,
@Eric czy czytałeś mój komentarz powyżej?
Seth

Odpowiedzi:

6

Co powiesz na:

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

W akcji:

$ stopwatch 
Hit Enter...
14 seconds elapsed
Glenn Jackman
źródło
3

Prostym sposobem jest zabranie czasu rozpoczęcia, a po zatrzymaniu skryptu - czasu zatrzymania. Na koniec wydrukuj różnicę czasu. Można to łatwo zrobić za pomocą Pythona:

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

Lub długa wersja dla czytelności:

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

Zatrzymywanie odbywa się za pomocą Ctrl + C

Sergiy Kolodyazhnyy
źródło
1
while True: passuruchamia procesor na 100%. Sugerowałbym while True: time.sleep(1e9)zamiast tego ( signal.pause()działa również, ale wymaga dodatkowego importu).
2012rcampion
@ 2012rcampion dobry punkt, edytowałem to już w.
Sergiy Kolodyazhnyy
1
Zazwyczaj uważa się za złą praktykę łapanie wszystkich wyjątków (choć w tym przypadku prawdopodobnie nie jest to zbyt istotne), except KeyboardInterruptbyłoby lepiej
Tobias Kienzler,
3
@TobiasKienzler Mam tego świadomość. Jeśli jest to duży projekt, dzielę rzeczy, aby złapać wiele wyjątków. Zapraszam do obejrzenia mojego innego kodu, wskaźników i tym podobnych. Ale w tym przypadku jest tylko jeden, więc nie jest dokładnie odpowiedni. Ponadto jest to szybki i brudny sposób. Po co lekko golfa?
Sergiy Kolodyazhnyy
W pełni się zgadzam, pomyślałem, że warto o tym wspomnieć;)
Tobias Kienzler,