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 :
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"