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  :

[pastacode lang=”bash” message=”” highlight=”” provider=”manual” manual=”nano%20~%2Fscripts%2Fcalcul_tps.sh”/]

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

[pastacode lang=”bash” message=”” highlight=”” provider=”manual” manual=”%23!%2Fbin%2Fsh%0A%0A%23——————————————-%23%0A%23%20%20Fonction%20calcul%20de%20dur%C3%A9e%20entre%202%20bornes%20%20%23%0A%23——————————————-%23%0A%23%20%201er%20param%C3%A8tre%20%20%3A%20temps%20debut%20%20%20%20%20%20%20%20%20%20%20%20%20%23%0A%23%20%202%C3%A8me%20param%C3%A8tre%20%3A%20temps%20fin%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%0A%23%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%0A%23——————————————-%23%0A%23%20Epix%20%3A%2006%2F03%2F2016%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%0A%23%20Version%20%3A%200.5%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%0A%23——————————————-%23%0A%0A%23V%C3%A9rification%20des%20deux%20param%C3%A8tres%0Aif%20%5B%20%24%23%20%3D%202%20%5D%0A%20%20%20%20%20%20%20%20%20then%0A%20%20%20%20%20%20%20%20%20%23Initialisation%20des%20variables%0A%20%20%20%20%20%20%20%20%20seconde%3D0%0A%20%20%20%20%20%20%20%20%20minute%3D0%0A%20%20%20%20%20%20%20%20%20heure%3D0%0A%20%20%20%20%20%20%20%20%20%23r%C3%A9cup%C3%A9ration%20des%202%20bornes%0A%20%20%20%20%20%20%20%20%20if%20%5B%20%241%20-lt%20%20%242%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20then%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20debut%3D%241%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fin%3D%242%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20debut%3D%242%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fin%3D%241%0A%20%20%20%20%20%20%20%20%20fi%0A%20%20%20%20%20%20%20%20%20%23Calcul%20de%20la%20dur%C3%A9e%20en%20secondes%0A%20%20%20%20%20%20%20%20%20duree%3D%24((%20%24fin%20-%20%24debut%20))%0A%20%20%20%20%20%20%20%20%20%23Calcul%20du%20nombre%20de%20minutes%0A%20%20%20%20%20%20%20%20%20minute%3D%24((%20%24duree%20%2F%2060%20))%0A%20%20%20%20%20%20%20%20%20%23Si%20le%20nombre%20de%20minute%20est%20sup%C3%A9rieur%20%C3%A0%2060%0A%20%20%20%20%20%20%20%20%20%23on%20calcul%20les%20heures%0A%20%20%20%20%20%20%20%20%20if%20%5B%20%24minute%20-gt%2060%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20then%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20heure%3D%24((%20%24minute%20%2F%2060%20))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20minute%3D%24((%20%24minute%20%25%2060%20))%0A%20%20%20%20%20%20%20%20%20fi%0A%20%20%20%20%20%20%20%20%20%23On%20r%C3%A9cup%C3%A8re%20le%20nombre%20de%20secondes%0A%20%20%20%20%20%20%20%20%20seconde%3D%24((%20%24duree%20%25%2060%20))%0A%0A%20%20%20%20%20%20%20%20%20%23On%20affiche%20le%20temps%20en%20fonction%20de%20la%20dur%C3%A9e%20totale%0A%20%20%20%20%20%20%20%20%20if%20%5B%20%24heure%20-gt%200%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20then%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20echo%20%24heure’h’%24minute’m’%24seconde’s’%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20elif%20%5B%20%24minute%20-gt%200%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20then%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20echo%20%24minute’m’%24seconde’s’%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20echo%20%24seconde’s’%0A%20%20%20%20%20%20%20%20%20fi%0Aelse%0A%20%20%20%20%20%20%20%20echo%20%22Erreur%20%3A%20indiquer%20les%20param%C3%A8tres%20de%20d%C3%A9but%20et%20de%20fin%20en%20seconde%22%0Afi”/]

Ensuite le rend le script exécutable :

[pastacode lang=”bash” message=”” highlight=”” provider=”manual” manual=”chmod%20%2Bx%20calcul_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 :

[pastacode lang=”bash” message=”” highlight=”” provider=”manual” manual=”nano%20~%2Fscripts%2Fexe_tps.sh”/]

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

[pastacode lang=”bash” message=”” highlight=”” provider=”manual” manual=”%23!%2Fbin%2Fsh%0A%0A%23——————————————-%0A%23%20Utilisation%20de%20la%20fonction%20pour%20calculer%0A%23%20la%20dur%C3%A9e%20d’ex%C3%A9cution%20d’un%20script%0A%23——————————————-%0A%0A%23En%20param%C3%A8tre%20d’entr%C3%A9e%2C%20on%20attend%20le%20nom%20du%20script%20%C3%A0%20ex%C3%A9cuter%0Aif%20%5B%20%24%23%20%3D%201%20%5D%0A%20then%0A%20%20%20%20%20%20%20%20%23Borne%20de%20d%C3%A9part%20en%20seconde%0A%20%20%20%20%20%20%20%20debut%3D%60date%20%2B%25s%60%0A%20%20%20%20%20%20%20%20%23Ex%C3%A9cution%20du%20script%0A%20%20%20%20%20%20%20%20%241%0A%20%20%20%20%20%20%20%20%23Borne%20de%20fin%20en%20seconde%0A%20%20%20%20%20%20%20%20fin%3D%60date%20%2B%25s%60%0A%20%20%20%20%20%20%20%20%23Ex%C3%A9cution%20de%20la%20fonction%20de%20calcul%20de%20dur%C3%A9e%0A%20%20%20%20%20%20%20%20echo%20%22—————————————–%22%0A%20%20%20%20%20%20%20%20echo%20%22%20Ex%C3%A9cution%20en%20%22%24(.%2Fcalcul_tps.sh%20%24debut%20%24fin)%0A%20%20%20%20%20%20%20%20echo%20%22—————————————–%22%0A%20%20else%0A%20%20%20%20%20%20%20%20echo%20%22Erreur%20%3A%20indiquer%20la%20commande%20%C3%A0%20ex%C3%A9cuter%22%0Afi”/]

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.

[pastacode lang=”bash” message=”” highlight=”” provider=”manual” manual=”chmod%20%2Bx%20exe_tps.sh%0A~%2Fscripts%2Fexe_tps.sh%20%22ls%20%2F*%20-R%22″/]