GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver le temps d'exécution d'une commande ou d'un processus sous Linux

Vous connaissez probablement l'heure de début d'une commande/d'un processus et la durée d'exécution d'un processus dans les systèmes de type Linux et Unix. Mais comment savoir quand la commande ou le processus s'est-il terminé et/ou quel est le temps total pris par la commande/le processus pour se terminer ? Eh bien, c'est facile ! Sur les systèmes de type Unix, il existe un utilitaire nommé 'GNU time' qui est spécialement conçu à cet effet. À l'aide de l'utilitaire Time, nous pouvons facilement mesurer le temps d'exécution total d'une commande ou d'un programme dans les systèmes d'exploitation Linux. La bonne chose est que la commande 'time' est préinstallée dans la plupart des distributions Linux, vous n'avez donc pas à vous soucier de l'installation.

Trouver le temps d'exécution d'une commande ou d'un processus sous Linux

Pour mesurer le temps d'exécution d'une commande/programme, il suffit de lancer.

$ /usr/bin/time -p ls

Ou,

$ temps ls

Exemple de résultat :

dir1 dir2 fichier1 fichier2 mcelogreal 0m0.007suser 0m0.001ssys 0m0.004s
$ time ls -a . .bash_logout répertoire1 fichier2 mcelog .sudo_as_admin_successful.. .bashrc répertoire2 .gnupg .profile .wget-hsts.bash_history .cache fichier1 .local .stackreal 0m0.008suser 0m0.001ssys 0m0.005s 

Les commandes ci-dessus affichent le temps d'exécution total de 'ls ' commande. Remplacez "ls " avec n'importe quelle commande/processus de votre choix pour trouver le temps d'exécution total.

Ici,

  1. real -fait référence au temps total pris par commande/programme,
  2. user - désigne le temps pris par le programme en mode utilisateur,
  3. sys - fait référence au temps pris par le programme en mode noyau.

Nous pouvons également limiter l'exécution de la commande uniquement pendant un certain temps. Reportez-vous au guide suivant pour plus de détails.

  • Comment exécuter une commande pendant une durée spécifique sous Linux

heure contre /usr/bin/heure

Comme vous l'avez peut-être remarqué, nous avons utilisé deux commandes 'time' et '/usr/bin/time ' dans les exemples ci-dessus. Alors, vous vous demandez peut-être quelle est la différence entre eux.

Voyons d'abord ce qu'est réellement 'time ' utilise 'type ' commande. Pour ceux qui ne connaissent pas, le Type La commande permet de connaître les informations sur une commande Linux. Pour plus de détails, consultez ce guide .

$ type -a time time est un mot clé du shelltime est /usr/bin/time

Comme vous le voyez dans la sortie ci-dessus, le temps est à la fois,

  • Un mot clé intégré au shell BASH
  • Un fichier exécutable, c'est-à-dire /usr/bin/time

Étant donné que les mots clés du shell ont priorité sur les fichiers exécutables, lorsque vous exécutez simplement time commande sans chemin complet, vous exécutez une commande shell intégrée. Mais, lorsque vous exécutez /usr/bin/time , vous exécutez un vrai temps GNU programme. Ainsi, pour accéder à la vraie commande, vous devrez peut-être spécifier son chemin explicite. Dégager? Bien !

Le mot-clé de shell 'time' intégré est disponible dans la plupart des shells comme BASH, ZSH, CSH, KSH, TCSH, etc. Le mot-clé de shell 'time' a moins d'options que les exécutables. La seule option que vous pouvez utiliser dans le mot clé 'time' est -p .

Vous savez maintenant comment trouver le temps d'exécution total d'une commande/d'un processus donné en utilisant la commande 'time'. Vous voulez en savoir un peu plus sur l'utilitaire 'GNU time' ? Continuez à lire !

Une brève introduction sur le programme 'GNU time'

Le programme de temps GNU exécute une commande/un programme avec des arguments donnés et résume l'utilisation des ressources système en tant que sortie standard une fois la commande terminée. Contrairement au mot clé 'time', le programme de temps GNU affiche non seulement le temps utilisé par la commande/le processus, mais également d'autres ressources telles que la mémoire, les E/S et les appels IPC.

La syntaxe typique de la commande Time est :

/usr/bin/time [options] commande [arguments...]

Les 'options' dans la syntaxe ci-dessus font référence à un ensemble d'indicateurs qui peuvent être utilisés avec la commande time pour exécuter une fonctionnalité particulière. La liste des options disponibles est donnée ci-dessous.

  • -f , --format - Utilisez cette option pour spécifier le format de sortie comme vous le souhaitez.
  • -p , --portability - Utilisez le format de sortie portable.
  • -o fichier, --output =FICHIER - Écrit la sortie dans FILE au lieu de s'afficher en tant que sortie standard.
  • -a , --append - Ajouter la sortie au FICHIER au lieu de l'écraser.
  • -v , --verbose - Cette option affiche la description détaillée de la sortie de l'utilitaire 'time'.
  • --quiet - Cette option empêche l'utilitaire time 'time' de signaler l'état du programme.

Lorsque vous utilisez le programme 'GNU time' sans aucune option, vous verrez une sortie comme ci-dessous.

$ /usr/bin/time wc /etc/hosts 9 28 273 /etc/hosts0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k0inputs+0outputs (0major+73minor)pagefaults 0swaps

Si vous exécutez la même commande avec le mot-clé intégré du shell 'time', la sortie sera légèrement différente :

$ time wc /etc/hosts 9 28 273 /etc/hostsreal 0m0.006suser 0m0.001ssys 0m0.004s

Parfois, vous souhaiterez peut-être écrire la sortie d'utilisation des ressources système dans un fichier plutôt que de l'afficher dans le terminal. Pour ce faire, utilisez -o drapeau comme ci-dessous.

$ /usr/bin/time -o fichier.txt ls dir1 dir2 fichier1 fichier2 fichier.txt mcelog

Comme vous pouvez le voir dans la sortie, l'utilitaire Time n'affiche pas la sortie. Parce que nous écrivons la sortie dans un fichier nommé file.txt . Jetons un œil à ce fichier :

$ cat file.txt 0.00utilisateur 0.00système 0:00.00écoulé 66 %CPU (0avgtext+0avgdata 2512maxresident)k0entrées+0sorties (0majeur+106mineur)défauts de page 0swaps

Lorsque vous utilisez -o flag, s'il n'y a pas de fichier nommé 'file.txt', il créera et y écrira la sortie. Si le file.txt est déjà présent, il écrasera son contenu.

Vous pouvez également ajouter la sortie au fichier au lieu de l'écraser en utilisant -a drapeau.

$ /usr/bin/time -a file.txt ls

Le -f flag permet aux utilisateurs de contrôler le format de la sortie selon leur goût. Supposons, par exemple, que la commande suivante affiche la sortie de 'ls ' et affiche uniquement l'utilisateur, le système et le temps total.

$ /usr/bin/time -f "\t%E réel,\t%U utilisateur,\t%S sys" ls dir1 dir2 fichier1 fichier2 mcelog0:00.00 réel, 0.00 utilisateur, 0.00 sys

N'oubliez pas que la commande shell intégrée "time" ne prend pas en charge toutes les fonctionnalités du programme GNU time.

Pour plus de détails sur l'utilitaire de temps GNU, reportez-vous aux pages de manuel.

$ temps homme

Pour en savoir plus sur le mot-clé "Time" intégré à Bash, exécutez :

$ temps d'aide

Linux
  1. Planifier une tâche avec la commande Linux at

  2. trouver des exemples de commandes sous Linux

  3. Un guide de la commande Linux "Rechercher"

  4. États de processus Linux

  5. Qu'est-ce qu'une commande pour trouver la priorité d'un processus sous Linux ?

Comment changer la priorité d'un processus sous Linux

Comment rechercher des fichiers avec la commande fd sous Linux

La commande timer sous Linux

15 exemples super utiles de la commande Find sous Linux

Comprendre la commande time sous Linux

La commande Linux find Directory :Explication