La sortie de echo $SHELL
montre que vous exécutez zsh
- pas bash
. zsh
est le shell par défaut dans les versions récentes de MacOS. Le site time
est alors réellement exécutée par l'interpréteur de commandes au lieu de lancer une commande séparée time
(mais, curieusement, il n'est pas listé comme un programme intégré au shell). La documentation plutôt laconique est disponible en exécutant man zshmisc
:
temps [pipeline] Le pipeline est exécuté, et les statistiques de temps sont rapportées sur l'erreur standard sous la forme spécifiée par le paramètre TIMEFMT . Si pipeline est omis, les statistiques concernant le processus du shell et ses enfants.
La signification du paramètre TIMEFMT peut être trouvée en exécutant man zshparam
:
TIMEFMT
The format of process time reports with the time keyword. The default is `%J %U user %S system %P cpu %*E total'.
Reconnaît les séquences d'échappement suivantes, bien qu'elles ne soient pas toutes disponibles sur tous les systèmes et que certaines ne soient pas toujours disponibles. disponibles sur tous les systèmes, et certaines qui sont disponibles peuvent ne pas être utiles :
%% A `%'.
%U CPU seconds spent in user mode.
%S CPU seconds spent in kernel mode.
%E Elapsed time in seconds.
%P The CPU percentage, computed as 100*(%U+%S)/%E.
%W Number of times the process was swapped.
%X The average amount in (shared) text space used in kilobytes.
%D The average amount in (unshared) data/stack space used in kilobytes.
%K The total space used (%X+%D) in kilobytes.
%M The maximum memory the process had in use at any time in kilobytes.
%F The number of major page faults (page needed to be brought from disk).
%R The number of minor page faults.
%I The number of input operations.
%O The number of output operations.
%r The number of socket messages received.
%s The number of socket messages sent.
%k The number of signals received.
%w Number of voluntary context switches (waits).
%c Number of involuntary context switches.
%J The name of this job.
A star may be inserted between the percent sign and flags printing time (e.g., `%*E'); this causes the time to be printed
sur hh:mm:ss.ttt' format (hours and minutes are only printed if they are not zero). Alternatively,
m' ou u' may be used (e.g.,
%mE') pour produire une sortie de temps en millisecondes ou microsecondes, respectivement.
Vous pouvez en tirer plusieurs enseignements :
Les mesures de temps effectuées par time
couvre à la fois le temps utilisé par zsh
lui-même (pour l'interprétation de votre shell script) ainsi que le temps utilisé par toutes les commandes engendrées par le shell script pour effectuer le travail réel.
Les mesures de temps sont divisées en une partie "utilisateur" et une partie "système". Un programme est considéré comme consommant du temps "utilisateur" lorsqu'il s'exécute seul (c'est-à-dire qu'il effectue des calculs, déplace des données dans la mémoire vive, etc.) Il consomme du temps "système" lorsqu'il a demandé au système d'exploitation de faire quelque chose en son nom (par exemple lire des données dans un fichier, envoyer des données sur un réseau, etc).
En plus de ce qui précède, vous verrez que la dernière partie du résultat est le temps total. Il s'agit d'un temps "d'horloge murale". C'est-à-dire que le temps passé en mode "utilisateur" et "système" est déterminé comme le temps pendant lequel le programme consomme du temps processeur, alors que le temps total est le temps passé dans le monde réel - y compris le temps pendant lequel le programme ne fait rien et le système ne fait rien au nom du programme.
Enfin, la partie "99% cpu" indique le rapport entre la consommation de temps combinée de l'utilisateur et du système, et le temps total de l'horloge murale. Pour vous, la mesure "99%" signifie que votre programme a, d'une manière ou d'une autre, utilisé activement le CPU presque tout le temps. Un chiffre faible indique que le système était occupé par d'autres choses et que votre programme avait des périodes d'inactivité.