s'il vous plaît, écrivez un objectif que vous souhaitez atteindre. pour mesurer la timecommande d' utilisation du temps de travail du script (time ./script.sh), pour imprimer la datecommande d' utilisation du temps actuel , etc.
Vous pouvez utiliser la timecommande intégrée de Linux . Depuis la page de manuel:
COMMANDE de temps [arguments]
time détermine les informations à afficher sur les ressources utilisées par la commande à partir de la chaîne FORMAT. Si aucun format n'est spécifié sur la ligne de commande, mais que la variable d'environnement TIME est définie, sa valeur est utilisée comme format.
Je me rends compte que c'est une question assez ancienne, mais c'est la façon dont je le fais pour n'importe quoi quand je veux / besoin de savoir combien de temps quelque chose a pris pour fonctionner.
Bash a un compteur de secondes intégré sous la forme d'une variable interne nommée SECONDS(voir: ici pour d'autres variables internes)
Mettez SECONDS=0avant tout ce que vous vérifiez le temps d'exécution. Il doit être après toute entrée utilisateur pour obtenir un bon résultat, donc si vous demandez des informations, mettez-le après les invites.
Ensuite, mettez ceci à la fin de ce que vous vérifiez:
if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
Si vous voulez seulement connaître le temps en secondes, vous pouvez simplifier ce qui précède pour:
echo "Completed in $SECONDS seconds"
Par exemple:
read -rp "What's your name? ""name"
SECONDS=0
echo "Hello, $name"if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
Un raccourci pour ceux qui ne veulent pas d'une mise en forme de l'heure aussi élaborée: date +%T -d "1/1 + $SECONDS sec"(limité à moins de 24h, mais vous pouvez aussi l'adapter pour ajouter des jours)
time
commande d' utilisation du temps de travail du script (time ./script.sh), pour imprimer ladate
commande d' utilisation du temps actuel , etc.time yourprogram.sh
:, que @Marius Cotofana a expliquéRéponses:
Si vous voulez la durée en secondes, en haut utilisez
et à la fin
la source
Vous pouvez utiliser la
time
commande intégrée de Linux . Depuis la page de manuel:Pour chronométrer le
cleanup.sh
script, utilisez:la source
time
vous utilisez. hackernoon.com/…Je me rends compte que c'est une question assez ancienne, mais c'est la façon dont je le fais pour n'importe quoi quand je veux / besoin de savoir combien de temps quelque chose a pris pour fonctionner.
Bash a un compteur de secondes intégré sous la forme d'une variable interne nommée
SECONDS
(voir: ici pour d'autres variables internes)Mettez
SECONDS=0
avant tout ce que vous vérifiez le temps d'exécution. Il doit être après toute entrée utilisateur pour obtenir un bon résultat, donc si vous demandez des informations, mettez-le après les invites.Ensuite, mettez ceci à la fin de ce que vous vérifiez:
Si vous voulez seulement connaître le temps en secondes, vous pouvez simplifier ce qui précède pour:
Par exemple:
la source
date +%T -d "1/1 + $SECONDS sec"
(limité à moins de 24h, mais vous pouvez aussi l'adapter pour ajouter des jours)la source
@anask fait une solution intelligente pour cette réponse, je recommande simplement d'utiliser le natif à la
$SECONDS
place pour en créer un nouveauLe but de la
printf
division est de convertir les secondes écoulées en heures, minutes, secondes correspondantes, respectivement.la source