Come cronometrare un comando in Linux

Se vuoi essere un buon amministratore di Linux, dovresti saperlo time
comando. Viene utilizzato per determinare quanto tempo impiega un particolare comando per essere eseguito.
È utile per testare le prestazioni dei tuoi script e comandi (cioè ti aiuta a trovare il tempo di esecuzione per gli script di shell o il tempo necessario per completare un comando).
Come usare il comando time di Linux
Uso time
comando, basta eseguire time
con il comando/programma che vuoi eseguire come input. Si prega di controllare l’esempio qui sotto
$ time ping linoxide.com
output
PING linoxide.com (104.27.115.15) 56(84) bytes of data.
64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=1 ttl=58 time=1.77 ms
64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=2 ttl=58 time=2.12 ms
64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=3 ttl=58 time=1.65 ms
--- linoxide.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10016ms
rtt min/avg/max/mdev = 1.118/1.476/2.124/0.362 ms
real 0m10.536s
user 0m0.002s
sys 0m0.007s
Il real
denota il tempo dell’orologio da parete impiegato dal comando “ping” dall’esecuzione al completamento, user
e sys
sono il tempo necessario ping
spazio utente e spazio kernel.
Come eseguire il comando time scrive il suo output in un file
Per scrivere l’output del comando time in un file anziché nella schermata di stampa, utilizzare -o
opzione della riga di comando, che prevede un nome file/percorso come input.
$ /usr/bin/time -o /home/smart/time-output.txt ping linoxide.com
Ora mostreremo il risultato del ping su stdout, while time
l’output del comando verrà scritto nel file di testo.
Nota: Ho usato /usr/bin/time invece di time
perché il comando time integrato della shell no -o
opzione.
Come aggiungere l’output a un file esistente
Per aggiungere l’output del comando time a un file esistente invece di sovrascriverlo, utilizzare -a
opzione della riga di comando.
$ /usr/bin/time -a /home/smart/time-output.txt ping linoxide.com
Come ottenere un output dettagliato del comando linux time
Possiamo usare -v
opzione della riga di comando per produrre risultati dettagliati.
$ time -v ping linoxide.com
output
Command being timed: "ping linoxide.com"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:11.77
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 3064
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 158
Voluntary context switches: 14
Involuntary context switches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Come personalizzare l’output del comando orario
Esistono numerose opzioni di formattazione, come mostrato nell’elenco seguente
C – Il nome e gli argomenti della riga di comando utilizzati
D – La dimensione media dell’area dati non condivisa del processo, in kilobyte
E – Tempo trascorso in formato orologio
F – Numero di page fault
I – Numero di voci del file system da parte del processo
K – Utilizzo medio totale della memoria del processo in kilobyte
M – Residente massimo imposta la dimensione della durata del processo in kilobyte
O – Numero di uscite del file system del processo
P – Percentuale di CPU ricevuta dal lavoro
R – Il numero di errori di pagina minori o recuperabili
S – Numero totale di secondi di CPU utilizzati dal sistema in modalità kernel
U – Numero totale di secondi di CPU utilizzati dalla modalità utente
W – Numero di volte in cui il processo è stato scambiato dalla memoria principale
X – Quantità media di testo condiviso nel processo
Z – dimensione della pagina di sistema in kilobyte
c – Numero di volte in cui il processo ha subito un cambio di contesto
e – Tempo effettivo trascorso utilizzato dal processo in secondi
k – Numero di segnali inviati al processo
p – La dimensione media dello stack non condiviso del processo in kilobyte
r – Numero di messaggi socket ricevuti dal processo
s – Numero di messaggi socket inviati dal processo
t – La dimensione media del set residente del processo in kilobyte
w – Il numero di volte in cui il processo è stato volontariamente cambiato di contesto
x – Stato di uscita del comando
Possiamo usare i cambi di formato come segue:
$ time -f "Elapsed Time = %E, Inputs %I, Outputs %O"
L’output per il comando precedente sarebbe qualcosa del genere:
Elapsed Time = 0:01:00, Inputs 2, Outputs 1
Se vogliamo aggiungere una nuova riga come parte della stringa di formato, utilizzare il carattere di nuova riga come segue:
$ time -f "Elapsed Time = %E n Inputs %I n Outputs %O"
Versioni di Linux Time Command
Esistono versioni di tre comandi, Bash, Zsh e Gnu time command. Possiamo usare type
comando per determinare se time è una parola chiave binaria o incorporata.
$ type time
output
# Bash
time is a shell keyword
# Zsh
time is a reserved word
# GNU time (sh)
time is /usr/bin/time
Si prega di scrivere i propri suggerimenti o commenti al comando orario e per ulteriori informazioni utilizzare pagine del manuale del tempo.