È possibile stampare il tempo di esecuzione di un comando shell con la seguente combinazione?Stampa il tempo di esecuzione di un comando shell
[email protected]:~# "command to execute" && echo "execution time"
È possibile stampare il tempo di esecuzione di un comando shell con la seguente combinazione?Stampa il tempo di esecuzione di un comando shell
[email protected]:~# "command to execute" && echo "execution time"
Non dimenticate che c'è una differenza tra di bash integrato time
(che dovrebbe essere chiamato per impostazione predefinita quando si do time command
) e /usr/bin/time
(che dovrebbe richiedere di chiamarlo per il suo percorso completo).
L'integrato time
stampa sempre su stderr, ma /usr/bin/time
consente di inviare l'output del tempo a un file specifico, in modo da non interferire con il flusso stderr del comando eseguito. Inoltre, il formato /usr/bin/time
s' è configurabile sulla linea di comando o dalla variabile ambiente TIME
, mentre bash builtin formato time
è solo configurato dalla variabile TIMEFORMAT
ambiente.
$ time factor 1234567889234567891 # builtin
1234567889234567891: 142662263 8653780357
real 0m3.194s
user 0m1.596s
sys 0m0.004s
$ /usr/bin/time factor 1234567889234567891
1234567889234567891: 142662263 8653780357
1.54user 0.00system 0:02.69elapsed 57%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+215minor)pagefaults 0swaps
$ /usr/bin/time -o timed factor 1234567889234567891 # log to file `timed`
1234567889234567891: 142662263 8653780357
$ cat timed
1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps
[email protected]:~# time [command]
Si distingue anche tra tempo reale utilizzato e ora del sistema utilizzato.
che è certamente la risposta di base - ma ci sono alcune complicazioni se si desidera visualizzare l'output di errore del comando e tuttavia inviare le informazioni di temporizzazione sullo standard output come la questione fa. Il comando time scrive su stderr. Quello che suggerisci è probabilmente abbastanza preciso, quindi il mio +1. –
'time' scrive sul tty, non su stderr. Credo che peggiori le cose. – mob
time
è un comando incorporato nella maggior parte delle shell che scrive le informazioni sul tempo di esecuzione sul tty.
Si potrebbe anche provare qualcosa di simile
start_time=`date +%s`
<command-to-execute>
end_time=`date +%s`
echo execution time was `expr $end_time - $start_time` s.
O in bash
:
start_time=`date +%s`
<command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s
In zsh è possibile utilizzare
=time ...
In bash o zsh è possibile utilizzare
command time ...
Questi (con meccanismi diversi) forzare un comando esterno da utilizzare.
aggiunta alla risposta di @ mob:
Aggiunta %N
-date +%s
ci dà nanosecondo precisione:
start=`date +%s%N`;<command>;end=`date +%s%N`;echo `expr $end - $start`
Se sto iniziando un processo di lunga esecuzione come una copia o hash e voglio sapere dopo quanto tempo ha preso, io faccio solo questo:
$ date; sha1sum reallybigfile.txt; date
che si tradurrà nella seguente output:
0.123.516,410617 millionsTue Jun 2 21:16:03 PDT 2015
5089a8e475cc41b2672982f690e5221469390bc0 reallybigfile.txt
Tue Jun 2 21:33:54 PDT 2015
Concesso, come implementato qui non è molto preciso e non calcola il tempo trascorso. Ma è sporcizia semplice ea volte tutto ciò di cui hai bisogno.
Per una misurazione delta linea per linea, provare gnonom.
È un'utilità della riga di comando, un po 'come il comando di moreutils, per anteporre le informazioni di timestamp allo standard output di un altro comando.Utile per processi a lungo termine in cui ti piacerebbe avere una registrazione storica di ciò che ci vuole così tanto tempo.
Piping di qualsiasi cosa a gnomon antepone un timestamp a ciascuna riga, indicando per quanto tempo quella linea era l'ultima riga nel buffer, ovvero quanto tempo impiegava la riga successiva a comparire. Per impostazione predefinita, gnomon mostrerà i secondi trascorsi tra ogni linea, ma ciò è configurabile.
Da "man bash": "La variabile TIMEFORMAT può essere impostata su una stringa di formato che specifica come devono essere visualizzate le informazioni di temporizzazione" –
Oops - I * pensato * c'era un modo per formattarlo, ma l'ho perso in 'help time' perché ho solo guardato oltre e ho pensato che fosse un argomento da linea di comando. Aggiornerò la risposta –
-1 Questo non sembra rispondere alla domanda affatto. –