Was macht der Zeitbefehl auf dem zsh Mac-Terminal? Und was ist die Ausgabe von "Kindern"?

Das habe ich vom Terminalbefehl "time" bekommen.

shell  0.32s user 0.08s system 0% cpu 6:09.64 total
children  0.10s user 0.16s system 0% cpu 6:09.64 total

Was sind Kinder?

Antworten (1)

Das, timewas Sie in Ihrer Frage verwenden, ist kein Befehl, sondern ein reserviertes Wort in . Es kann auf zwei verschiedene Arten verwendet werden und seine Ausgabe kann über den $TIMEFMTParameter angepasst werden. Es gibt auch einen externen Befehl time unter macOS, der eine etwas andere Ausgabe erzeugt.

Nurtime

Wenn Sie es timeselbst verwenden (wie in Ihrer Frage gezeigt), meldet Ihre aktuelle Shell Zeitstatistiken für sich selbst und ihre untergeordneten Elemente:

  • shellstellt die Shell dar, in der Sie Ihre timeAnweisung ausgeführt haben. childrenist eine Zusammenfassung aller laufenden Prozesse, die von dieser Shell gestartet wurden (und ihr noch gehören).
  • userund systemzeigt die Menge an CPU-Sekunden, die die oben genannten Prozesse im Benutzermodus bzw. Kernelmodus verbracht haben .
  • cpuzeigt die kombinierten Werte von userund systemals Prozentsatz der gesamten CPU-Zeit. totalzeigt an, wie lange es her ist, dass die Shell oder ihr ältester Kindprozess gestartet wurde (hier in Minuten:Sekunden.Bruch).

time <command>

Häufiger timewird vor einem Befehl hinzugefügt. Wenn Sie es auf diese Weise verwenden, meldet die Shell nur Zeitstatistiken für diesen Befehl:

% time sleep 0
sleep 0  0.00s user 0.00s system 43% cpu 0.007 total
% 

totalHier ist die Anzahl der Sekunden, die für die Ausführung des Befehls benötigt wurden.

timeAusgabe anpassen

timeDie Ausgabe kann angepasst werden, indem der $TIMEFMTParameter eingestellt wird . Zum Beispiel können wir die Speichernutzung hinzufügen:

% TIMEFMT+='  max RSS %M'
% time        
shell  0.22s user 0.10s system 53% cpu 0.601 total  max RSS 6120
children  0.11s user 0.16s system 45% cpu 0.601 total  max RSS 3056
% time sleep 0
sleep 0  0.00s user 0.00s system 61% cpu 0.003 total  max RSS 580
% 

Externer Befehltime

Der externe Befehl timekann wie folgt verwendet werden:

% command time
% command time sleep 0 
        0.00 real         0.00 user         0.00 sys
% command time -p sleep 0 
real         0.00
user         0.00
sys          0.00
% command time -l sleep 0  # Add memory usage
        0.00 real         0.00 user         0.00 sys
              585728  maximum resident set size
                   0  average shared memory size
                   0  average unshared data size
                   0  average unshared stack size
                 160  page reclaims
                   0  page faults
                   0  swaps
                   0  block input operations
                   0  block output operations
                   0  messages sent
                   0  messages received
                   0  signals received
                   0  voluntary context switches
                   1  involuntary context switches
             2198249  instructions retired
             3195521  cycles elapsed
              237568  peak memory footprint
%

realhier ist das gleiche wie totaloben.