Je veux exécuter un processus dans bash et enregistrer dans une variable d'environnement le nombre de secondes qu'il a fallu pour exécuter. Comment ferais-je une chose pareille?bash: enregistrer dans une variable le nombre de secondes qu'un processus a pris pour s'exécuter
Répondre
Voulez-vous placer ce code dans votre script, ou le faire depuis le processus qui démarre le script? Pour ce dernier, vous pouvez utiliser le mot réservé "time", puis analyser ce qu'il retourne pour obtenir combien de temps prend un script. Si vous voulez faire cela à partir d'un script, vous pouvez mettre la variable SECONDS à zéro, et chaque fois par la suite que vous faites référence à cette variable, il sera mis à jour pour être le nombre de secondes écoulées. Donc, vous pouvez mettre "SECONDS = 0" au tout début de votre script, et chaque fois que vous avez besoin du temps écoulé, il sera dans la variable SECONDS.
Vous pouvez également utiliser la SECONDS $ trick sur la ligne de commande ainsi, par exemple:
$ SECONDS=0; sleep 5 ; echo "that took approximately $SECONDS seconds"
Le mot réservé du temps et la variable SECONDES sont toutes deux documentées dans la page de manuel bash.
Cela fonctionne dans Bash, et aussi zsh:
# Set time format to seconds
TIMEFORMAT=%R
# Time a process
PROC_TIME=$(time (insert command here >/dev/null 2>&1) 2>&1)
echo $PROC_TIME
- Les deux premiers redirections cachent la sortie de votre processus ">/dev/null 2> & 1"
- La dernière redirection est nécessaire parce que "time" imprime l'heure sur stderr
'rtime() {TIMEFORMAT =% R; echo $ (time ("$ 1" 2> & 1) 2> & 1)} '.... et plus tard ...' echo $ SECONDS' - C'est la magie ™ ... _et je l'utilise ** TOUS ** le temps_. –
Utilisez la commande heure. Notez que la version de l'heure de bash n'est pas la même que/usr/bin/time. Donc, vous auriez quelque chose comme:
TIME=`/usr/bin/time --format="%e" your_command_here >/dev/null`
Le format tire juste la valeur temps « réel » out. Vous auriez besoin de convertir cela à partir d'une chaîne si vous vouliez faire autre chose que de l'afficher.
Si vous voulez simplement exporter la chaîne, utilisez export
.
La variable '$ TIME' est actuellement utilisée par'/usr/bin/time', il vaudrait donc mieux choisir un nom de variable différent. Une façon d'éviter de telles collisions est de ne pas utiliser de noms en majuscules pour vos propres variables. –
En utilisant GNU time,
\time -p -o time.log $COMMAND
puis lire time.log
.
(Utilisez soit \time
ou command time
, sinon vous allez utiliser intégré dans Bash time
, qui ne supporte pas ces options.)
Cela fonctionne même lorsque $COMMAND
tirages à stderr (qui confondre Oli de réponse), et conserve stdout/stderr (ce que la réponse de Farzy ne fait pas).
-o ...
dit time
d'envoyer sa sortie à un fichier plutôt que de stderr (comme la valeur par défaut), et -p
génère la
real 0.00
user 0.00
sys 0.00
plutôt que par défaut de temps GNU de
0.00user 0.00system 0:00.01elapsed 8%CPU (0avgtext+0avgdata 0maxresident)k
80inputs+0outputs (1major+188minor)pagefaults 0swaps
- 1. Citation non respectée dans une variable bash
- 2. mySQL - résultats par nombre de secondes
- 3. Oracle: nombre variable de paramètres pour une procédure stockée
- 4. capture d'erreur standard dans une variable dans bash
- 5. Enregistrer un nombre dans une chaîne de caractères entiers et le rappeler dans une action ultérieure
- 6. Enregistrer DateTime dans mssql 2005 sans heures, minutes et secondes
- 7. y a-t-il une limite pour le nombre de sk_buff dans le noyau?
- 8. Enregistrer des références à une variable dans NSMutableArray
- 9. Synchroniser les processus concurrents dans bash avec 'time'
- 10. Enregistrer le contenu d'une variable dans XCode Dubugger
- 11. nombre de MySQL dans la variable PHP
- 12. Comment convertir en SQL le nombre de secondes en une durée lisible par l'homme?
- 13. Obtenir l'heure actuelle en secondes depuis l'époque sur Linux, Bash
- 14. Passage variable Nombre d'arguments
- 15. Comment obtenir le nombre de secondes entre deux DateTimes dans Ruby on Rails
- 16. Temps pris pour le chargement de la fonction en C#
- 17. Voie brute pour enregistrer la sortie de processus
- 18. Kill processus dans bash qui s'exécute plus de temps spécifié?
- 19. Remplacer la sortie dans une boucle dans le script bash
- 20. nombre variable d'arguments dans ParamArray argList()
- 21. Enregistrer un message avec un nombre variable d'arguments de type printf
- 22. Y at-il un moyen de compter le nombre de secondes depuis le démarrage?
- 23. UNIX Appel système pour enregistrer un processus d'arrière-plan
- 24. UI design pour l'écran qui a le nombre de saisie de données textFields
- 25. NSNombre de secondes à Heures, minutes, secondes
- 26. Comment enregistrer une variable dans un onglet pour l'utiliser avec son extension Firefox?
- 27. WinForms: nombre variable de contrôles TextBox dynamiques
- 28. Comme pour stocker tous les arguments de ligne de commande dans un script bash en une seule variable
- 29. La variable non affectée a une valeur
- 30. OpenSSL dans le script bash
bash est une source sans fin d'astuce et de surprises – flybywire