Commande Time Linux : Comment l’utiliser et ce qu’il faut savoir

Que vous soyez administrateur système ou utilisateur d’un serveur privé virtuel (VPS), l’apprentissage de diverses commandes Linux vous aidera à exécuter vos tâches plus efficacement. 

Dans ce tutoriel, vous apprendrez à connaître la commande Time de Linux – ce qu’elle est, son utilité et comment l’utiliser.

Qu’est-ce que la commande Linux Time ?

La commande time de Linux et des systèmes d’exploitation de type Unix vous permet de déterminer la durée d’exécution d’une commande spécifique. Elle est généralement utilisée pour mesurer les performances des scripts ou des commandes. Plus une commande termine rapidement sa tâche, meilleure est sa performance.

En outre, la commande time peut également afficher l’utilisation des ressources système du processus, ce qui en fait un outil utile pour évaluer l’efficacité d’une commande spécifique.

Par exemple, vous voulez choisir entre deux cron jobs qui peuvent exécuter la même tâche. Vous pouvez déterminer le temps nécessaire à chaque tâche cron pour effectuer les tâches en exécutant la commande time.

Cependant, avant de commencer à parler de l’utilisation de la commande time de Linux, gardez à l’esprit qu’elle diffère en fonction de l’interpréteur de commandes que vous utilisez. Il existe trois versions différentes de la commande time dans le système Linux :

  • Bash – déjà intégré dans l’interpréteur de commandes et peut être exécuté en tapant time.
  • Zsh – comme Bash, il est également déjà intégré au système, exécuté par le temps de frappe.
  • GNU Default Linux (GNU) – disponible en tapant le chemin explicite de la commande, usr/bin/time.

Pour vérifier quelle version de la commande Linux time s’applique à votre système, entrez ce qui suit dans votre programme shell :

$ type time
  • Si vous obtenez la sortie time is a shell keyword, vous utilisez la commande time Bash.
  • Si vous obtenez la sortie time is a reserved word, vous utilisez la commande time Zsh.
  • Si vous obtenez la sortie time is usr/bin/time, vous utilisez la commande time GNU.

Vous pouvez également simplifier la commande time GNU sous Linux en créant une commande alias pour usr/bin/time.

Suggestions de lecture

Consultez notre guide sur les scripts bash.

Utilisation de la commande Time sous Linux

Dans cette section, vous apprendrez la syntaxe de la commande Linux time et comment lire sa sortie. 

Connaître la syntaxe de la commande Time de Linux

L’utilisation de la commande time est très simple : il vous suffit d’ouvrir votre programme shell et d’entrer :

$ time (command)

Pour tirer pleinement parti de la commande time, vous devez comprendre sa syntaxe :

$ time (commande) [arg1] [arg2] ... [argN]
time [options] (commande) [arg1] [arg2] ... [argN]

Time exécute la commande donnée avec tous les arguments donnés (arg). Une fois que la commande a terminé sa tâche, Time fournit des informations sur la durée d’exécution de la commande et sur les ressources utilisées.

Si la commande du programme se termine avec un état non nul indiquant un échec, time affiche un message d’avertissement et l’état de sortie.

En entrant le format de chaîne utilisé par la commande, vous pouvez déterminer les informations à afficher dans la section sur l’utilisation des ressources du système.

Si l’utilisateur ne spécifie pas de format, mais que la variable d’environnement time est définie, sa valeur sera utilisée comme format. Sinon, le format par défaut intégré dans time sera utilisé.

Les options sont des spécificateurs de ressources qui modifient la sortie de time. Elles doivent apparaître avant la commande. Tout ce qui est saisi après la commande sera considéré comme un argument. 

Pour afficher toutes les options que vous pouvez utiliser pour le temps, entrez ce qui suit dans la ligne de commande :

$ man time

Vous verrez une liste d’options que vous pouvez utiliser pour modifier la sortie de la commande Linux time. Cependant, n’oubliez pas que ces options peuvent varier en fonction du système d’exploitation et de la version que vous utilisez.

Commençons par un premier exemple simple. Pour savoir combien de temps prend l’exécution de la commande ls utilisée pour afficher le contenu d’un répertoire choisi, entrez ce qui suit dans l’interpréteur de commandes :

$ time ls

Vous verrez la sortie de la commande ls et le temps qu’il a fallu pour l’exécuter. 

Essayons maintenant d’incorporer un argument. Dans cet exemple, nous allons essayer de savoir combien de temps il faut pour déplacer un fichier dans un autre répertoire :

$ time mv example.txt example-dir

En conséquence, le fichier example.txt a été déplacé vers example-dir, et vous verrez le temps nécessaire pour terminer le processus.

Comprendre les résultats

Pour bien comprendre les avantages de la commande time de Linux, vous devez savoir comment lire sa sortie. 

Lecture de la sortie dans le terminal

La sortie par défaut de la commande intégrée time contient les informations suivantes :

  • Temps réel (real). Temps réel nécessaire au processus pour s’exécuter du début à la fin. Cela inclut le temps pris par d’autres processus et le temps passé à attendre qu’ils soient terminés.
  • Temps utilisateur (user). Temps passé par le CPU en mode utilisateur au cours du processus. Les autres processus et le temps bloqué ne sont pas inclus.
  • Temps système (sys). Il s’agit du temps total passé par le CPU en mode noyau au cours du processus. Comme pour le temps utilisateur, les autres processus et le temps passé bloqué par d’autres processus ne sont pas comptabilisés.

Voici un exemple. Si nous entrons la commande ci-dessous dans la ligne de commande, le système téléchargera le programme d’installation de la machine virtuelle open-source VirtualBox :

$ time wget https://download.virtualbox.org/virtualbox/6.1.28/virtualbox-6.1_6.1.28-147628~Ubuntu~eoan_amd64.deb

Une fois le téléchargement terminé, vous verrez trois figures – real, user et sys. Comme vous pouvez le constater, ils indiquent le temps écoulé en mode réel, utilisateur et système pendant le téléchargement, en minutes et en secondes.

Écriture de la sortie dans un fichier

Il peut arriver que vous souhaitiez sauvegarder les informations que vous avez reçues en utilisant le temps. Heureusement, il existe une option de format qui vous permet d’écrire la sortie de la commande dans un fichier.

Si vous utilisez la commande GNU time, l’option -o vous permettra justement de créer un nouveau fichier de sortie contenant des informations sur l’autre commande.

Par exemple, entrez la commande suivante pour enregistrer les informations ping de hostinger.com et les détails de son processus dans un nouveau fichier :

$ time -o hostinger-ping-info.log ping hostinger.com

Notez que si vous utilisez l’interpréteur de commandes Bash et que vous souhaitez utiliser -o ou toute autre option, vous devrez invoquer la commande time externe en utilisant le chemin explicite usr/bin/time au lieu de time.

$ usr/bin/time -o hostinger-ping-info.log ping hostinger.com

Pour vérifier le contenu du fichier hostinger-ping-info.log, utilisez la commande cat :

$ cat hostinger-ping-info.log

Obtenir des résultats détaillés dans un fichier

La sortie par défaut de la commande time peut ne pas contenir tous les détails que vous souhaitez connaître sur un processus particulier. Pour afficher une sortie détaillée, ajoutez l’option -v à la commande time sous Linux.

Par exemple, si vous souhaitez exécuter la commande Linux ping pour connaître le temps de réponse de hostinger.com et afficher des informations détaillées sur le processus, entrez la commande suivante :

$ time -v ping hostinger.com

Si vous n’utilisez pas la commande GNU time ou si vous avez rencontré un flux d’erreurs standard, essayez de déclencher la commande externe time en entrant le chemin complet usr/bin/time à la place :

$ usr/bin/time -v ping hostinger.com

Les utilisateurs peuvent également personnaliser les types d’informations qu’ils souhaitent voir apparaître lors de la saisie de la commande time en utilisant ces options de format de sortie :

%Un `%’ littéral.
CNom et arguments de la ligne de commande de la commande en cours de chronométrage.
Taille moyenne d de la zone de données non partagées du processus, en kilo-octets.
Le temps réel écoulé (wall clock) utilisé par le processus, en (heures :)minutes:secondes.
Nombre d’erreurs de page majeures, ou nécessitant des entrées/sorties, survenues pendant que le processus était en cours d’exécution. Il s’agit de défauts où la page a migré hors de la mémoire primaire.
Le nombre i d’entrées du système de fichiers par le processus.
L’utilisation moyenne de la mémoire totale du processus en kilo-octets.
Taille maximale de l’ensemble des résidents du processus pendant sa durée de vie, en kilo-octets.
Le nombre de sorties du système de fichiers par le processus.
Pourcentage du CPU que ce travail a obtenu. Il s’agit simplement des temps utilisateur et système divisés par le temps total d’exécution. Il imprime également un signe de pourcentage.
Le nombre de défauts de page mineurs ou récupérables. Il s’agit de pages qui ne sont pas valides mais qui n’ont pas encore été réclamées par d’autres pages virtuelles. Les données de la page sont donc toujours correctes, mais les tables du système doivent être mises à jour.
Le nombre total de secondes de CPU utilisées par le système pour le compte du processus (en mode noyau) en secondes.
Nombre total de secondes de CPU que le processus a utilisé directement (en mode utilisateur) en secondes.
Nombre de fois où le processus a été transféré hors de la mémoire principale.
Quantité moyenne de texte partagé dans le processus, en kilo-octets.
Taille de la page du système z, en octets. Il s’agit d’une constante par système, qui peut varier d’un système à l’autre.
Le nombre de fois où le processus a été changé de contexte involontairement (parce que la tranche de temps a expiré).
Temps réel (wall clock) écoulé utilisé par le processus, en secondes.
Le nombre de signaux délivrés au processus.
Taille moyenne de la pile non partagée du processus, en kilo-octets.
Le nombre de messages de socket reçus par le processus.
Le nombre de messages de socket envoyés par le processus.
Taille moyenne de l’ensemble des résidents du processus, en kilo-octets.
Nombre de fois où le programme a été changé de contexte volontairement, par exemple en attendant la fin d’une opération d’entrée/sortie.
Le statut de sortie de la commande.

Par exemple, si vous souhaitez afficher le nombre de messages de socket reçus par la commande, entrez ce qui suit dans le shell :

$ /usr/bin/time -f "Socket Messages Received: %r" command

Par ailleurs, si vous utilisez le shell Bash, vous préférerez peut-être la commande intégrée TIMEFORMAT. TIMEFORMAT utilise une chaîne de format particulière pour permettre aux utilisateurs de spécifier la manière dont les informations temporelles doivent être affichées.

Voici la liste des valeurs des paramètres TIMEFORMAT :

%%Un % littéral.
%[p][l]RLe temps écoulé en secondes.
%[p][l]ULe nombre de secondes de CPU que le processus a passé en mode utilisateur.
%[p][l]SNombre de secondes de CPU que le processus a passé en mode système.
%PLe pourcentage de CPU, calculé comme (%U + %S) / %R.

Conclusion

La commande time de Linux est un excellent outil pour vérifier le temps d’exécution et les performances globales d’un processus particulier. Dans ce guide, vous avez appris à connaître la commande time de Linux, son objectif, sa syntaxe et ses résultats. 

Nous espérons que ce guide vous a permis d’apprendre à naviguer plus efficacement dans le système Linux. 

Author
L'auteur

Chaimaa Chakir

Chaimaa est une spécialiste du référencement et du marketing de contenu chez Hostinger. Elle est passionnée par le marketing digital et la technologie. Elle espère aider les gens à résoudre leurs problèmes et à réussir en ligne. Chaimaa est une cinéphile qui adore les chats et l'analyse des films.