Comment puis-je suivre le temps à partir de la ligne de commande?

11

Je recherche une commande pour suivre l'heure.

J'imagine le workflow suivant:

  1. Exécutez la commande
  2. ... fais autre chose ...
  3. Revenez à la fenêtre du terminal et arrêtez la commande
  4. En sortie, vous recevez le temps écoulé entre 3 et 1
orschiro
la source
@JacobVlijm J'aime vraiment la clarté de la réponse d'Anwar ci-dessous. En tant qu'utilisateur non technique, il est plus facile de comprendre que les réponses dans le fil de discussion possible en double. Qu'est-ce que tu penses?
orschiro
2
@JacobVlijm Je ne pense pas que ce soit un doublon. L'OP demande ici un chronomètre, la question là demande comment mesurer le temps d'exécution du processus.
Seth
@Seth ok, vote rétracté.
Jacob Vlijm
@Eric avez-vous lu mon commentaire ci-dessus?
Seth

Réponses:

6

Que diriez-vous:

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

En action:

$ stopwatch 
Hit Enter...
14 seconds elapsed
glenn jackman
la source
3

Un moyen simple de le faire est de prendre l'heure de début, et une fois que vous arrêtez le script - prenez l'heure de fin. Enfin, imprimez le décalage horaire. Cela peut facilement être fait avec Python:

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

Ou version longue pour plus de lisibilité:

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

L'arrêt se fait avec Ctrl + C

Sergiy Kolodyazhnyy
la source
1
while True: passexécute le processeur à 100%. Je suggère while True: time.sleep(1e9)plutôt ( signal.pause()fonctionne aussi mais nécessite une importation supplémentaire).
2012rcampion
@ 2012rcampion bon point, déjà édité.
Sergiy Kolodyazhnyy
1
Il est généralement considéré comme une mauvaise pratique d'attraper toutes les exceptions (bien que dans ce cas, ce ne soit probablement pas trop pertinent), ce except KeyboardInterruptserait mieux
Tobias Kienzler
3
@TobiasKienzler J'en suis conscient. S'il s'agit d'un grand projet, je divise des choses pour attraper plusieurs exceptions. N'hésitez pas à regarder mes autres codes, indicateurs et autres. Mais dans ce cas, il n'y en a qu'un, donc ce n'est pas exactement pertinent. De plus, c'est un moyen rapide et sale. Pourquoi nit le golf légèrement?
Sergiy Kolodyazhnyy
Je suis entièrement d'accord, je pensais juste que cela mérite d'être mentionné;)
Tobias Kienzler