Christophe CasalegnoAutoimmune warrior, Entrepreneur & Bio/Hacker

brain@127.0.0.1:~$ cat post.html

Gnu / Linux: an easy way to measure execution time in a BASH script

Linux Shell Bash Timer

Hello, this follow-up post goes with my latest short late-night video on YouTube, which you can watch below.

Watch the video on YouTube


A few clarifications:

1) Outside a bash script, in your session, the $SECOND variable will display the number of seconds elapsed since the corresponding terminal session was opened.

2) If you want to time different sections of the script, rather than measure from its start, you can both:
– reset the variable whenever you want
– store its value at a given moment in another variable.

You can therefore save each value you need in a variable, then use whatever arithmetic operations you like to get the result you want. For example:

echo Partie 1 :
sleep 3
PARTIE1=$SECONDS
echo "Temps écoulé durant la partie 1 : $PARTIE1 secondes"
SECONDS="0"
echo Partie 2 :
sleep 2
PARTIE2=$SECONDS
echo "Temps écoulé durant la partie 2 : $PARTIE2 secondes"
echo "temps total écoulé : $(($PARTIE1+$PARTIE2)) secondes"

This gives:

Partie 1 :
Temps écoulé durant la partie 1 : 3 secondes
Partie 2 :
Temps écoulé durant la partie 2 : 2 secondes
temps total écoulé : 5 secondes

Enjoy!

—
Christophe Casalegno
​You can follow me on: Twitter | Facebook | Linkedin | Telegram | Youtube

3 comments

  1. Et pour monitorer l’avancement d’une tâche dont on connais la durée*, avec une barre de progression et un temps total estimé : `pv FUNCTION`
    Ex :

    $ pv filename.bz2 | bunzip2 > filename.sql
    ou
    $ pv dump.sql | mysql -u root -p DB_NAME

    * fonctionne aussi pour les durées indeterminées

  2. Un petit ajout pratique et dans le thème :

    Pour chronométrer le temps que met un script ou une action a effectuer :
    $ time FUNCTION
    ou
    $ time SCRIPT.sh

    Exemple ici :
    time ./test.sh
    Partie 1 :
    Temps écoulé durant la partie 1 : 3 secondes
    Partie 2 :
    Temps écoulé durant la partie 2 : 2 secondes
    temps total écoulé : 5 secondes

    real 0m5.006s
    user 0m0.002s
    sys 0m0.004s

    Je vous laisse aller lire le man de ‘time’ pour les explications des 3 valeurs disctincts. (C’est le « real » qui nous intéresse ici)

    1. Hello et merci pour ton message. Justement de mémoire dans cette vieille vidéo (ça commence à dater !), je parle de time et ici c’était justement pour avoir une information in bash sans appel externe à time. Excellente continuation.

Leave a comment

Add a comment
Christophe Casalegno Brain 0verride

Keep it simple
and direct!