Calculer le temps d’exécution d’un script

L’idée est de pouvoir connaître le temps d’exécution d’une commande ou d’un script en linux.

On commence par créer un nouveau script  :

nano ~/scripts/calcul_tps.sh

Puis on met le contenu ci-dessous à l’intérieur :

#!/bin/sh

#-------------------------------------------#
#  Fonction calcul de durée entre 2 bornes  #
#-------------------------------------------#
#  1er paramètre  : temps debut             #
#  2ème paramètre : temps fin               #
#                                           #
#-------------------------------------------#
# Epix : 06/03/2016                         #
# Version : 0.5                             #
#-------------------------------------------#

#Vérification des deux paramètres
if [ $# = 2 ]
         then
         #Initialisation des variables
         seconde=0
         minute=0
         heure=0
         #récupération des 2 bornes
         if [ $1 -lt  $2 ]
                then
                        debut=$1
                        fin=$2
                else
                        debut=$2
                        fin=$1
         fi
         #Calcul de la durée en secondes
         duree=$(( $fin - $debut ))
         #Calcul du nombre de minutes
         minute=$(( $duree / 60 ))
         #Si le nombre de minute est supérieur à 60
         #on calcul les heures
         if [ $minute -gt 60 ]
                then
                        heure=$(( $minute / 60 ))
                        minute=$(( $minute % 60 ))
         fi
         #On récupère le nombre de secondes
         seconde=$(( $duree % 60 ))

         #On affiche le temps en fonction de la durée totale
         if [ $heure -gt 0 ]
                then
                        echo $heure'h'$minute'm'$seconde's'
                elif [ $minute -gt 0 ]
                        then
                                echo $minute'm'$seconde's'
                        else
                                echo $seconde's'
         fi
else
        echo "Erreur : indiquer les paramètres de début et de fin en seconde"
fi

Ensuite le rend le script exécutable :

chmod +x calcul_tps.sh

Ce script sert à calculer la durée entre 2 temps formatés en seconde. Linux nous permet d’avoir la date encours sous cette forme avec la commande date +%s

Pour tester le fonctionnement, nous allons créer un script qui permet de calculer le temps de traitement d’une commande Linux.

Création d’un nouveau script :

nano ~/scripts/exe_tps.sh

On intègre le code ci-dessous à l’intérieur :

#!/bin/sh

#-------------------------------------------
# Utilisation de la fonction pour calculer
# la durée d'exécution d'un script
#-------------------------------------------

#En paramètre d'entrée, on attend le nom du script à exécuter
if [ $# = 1 ]
 then
        #Borne de départ en seconde
        debut=`date +%s`
        #Exécution du script
        $1
        #Borne de fin en seconde
        fin=`date +%s`
        #Exécution de la fonction de calcul de durée
        echo "-----------------------------------------"
        echo " Exécution en "$(./calcul_tps.sh $debut $fin)
        echo "-----------------------------------------"
  else
        echo "Erreur : indiquer la commande à exécuter"
fi

Et enfin on peut l’utiliser. Si la commande a des paramètres, il faut penser à mettre l’ensemble entre guillemets pour que le script fonctionne correctement.

chmod +x exe_tps.sh
~/scripts/exe_tps.sh "ls /* -R"