Come usare il comando time su Linux
Fatmawati Achmad Zaenuri/Shutterstock.com
Vuoi sapere quanto dura un processo e molto altro ancora? Il Linux |_+_| Il comando restituisce le statistiche temporali, offrendoti interessanti informazioni sulle risorse utilizzate dai tuoi programmi.
il tempo ha molti parenti
Esistono molte distribuzioni Linux e diversi sistemi operativi simili a Unix. Ognuno di questi ha una shell di comando predefinita. La shell predefinita più comune nelle moderne distribuzioni Linux è la shell bash. Ma ce ne sono molti altri, come il guscio Z (zsh) e il guscio Korn (ksh).
Tutte queste shell incorporano il proprio |_+_| comando, sia come a integrato comando o come a parola riservata . Quando digiti |_+_| in una finestra di terminale la shell eseguirà il suo comando interno invece di usare GNU |_+_| binario fornito come parte della tua distribuzione Linux.
Vogliamo usare la versione GNU di |_+_| perché ha di più opzioni ed è più flessibile.
A che ora verrà eseguito?
Puoi controllare quale versione verrà eseguita usando |_+_| comando. |_+_| ti farà sapere se la shell gestirà la tua istruzione da sola, con le sue routine interne, o se la passerà al binario GNU.
Annuncio pubblicitarioin una finestra di terminale digita la parola |_+_|, uno spazio e poi la parola |_+_| e premi Invio.
time
Possiamo vederlo nella shell bash |_+_| è una parola riservata. Ciò significa che Bash utilizzerà il suo interno|_+_| routine per impostazione predefinita.
time
Nella shell Z (zsh) |_+_| è una parola riservata, quindi le routine interne della shell verranno utilizzate per impostazione predefinita.
time
Nel guscio Korn |_+_| è una parola chiave. Verrà utilizzata una routine interna al posto di GNU |_+_| comando.
IMPARENTATO: Che cos'è ZSH e perché dovresti usarlo al posto di Bash?
Esecuzione del comando GNU time
Se la shell sul tuo sistema Linux ha un |_+_| . interno routine dovrai essere esplicito se desideri utilizzare GNU |_+_| binario. Devi:
- Fornisci l'intero percorso al binario, ad esempio |_+_|. Esegui |_+_| comando per trovare questo percorso.
- Usa |_+_|.
- Usa una barra rovesciata come |_+_|.
Il |_+_| Il comando ci fornisce il percorso del binario.
Annuncio pubblicitarioPossiamo testarlo usando |_+_| come comando per avviare il binario GNU. Che funzioni. Riceviamo una risposta dal |_+_| comando che ci dice che non abbiamo fornito alcun parametro della riga di comando su cui lavorare.
Digitando |_+_| funziona anche e otteniamo le stesse informazioni sull'utilizzo da |_+_|. Il |_+_| comando dice alla shell di ignorare il comando successivo in modo che venga elaborato al di fuori della shell.
Usando un |_+_| carattere prima del nome del comando è lo stesso che usare |_+_| prima del nome del comando.
Il modo più semplice per assicurarti di utilizzare GNU |_+_| binario consiste nell'utilizzare l'opzione barra rovesciata.
time
time
|_+_| invoca il conchiglia versione del tempo. |_+_| usa il |_+_| binario .
Uso del comando orario
Diamo il tempo ad alcuni programmi. Stiamo usando due programmi chiamati |_+_| e |_+_|. Sono stati creati da loop1.c e loop2.c. Non fanno nulla di utile oltre a dimostrare gli effetti di un tipo di inefficienza di codifica.
Annuncio pubblicitarioQuesto è loop1.c. La lunghezza di una stringa è richiesta all'interno dei due cicli annidati. La lunghezza è ottenuta in anticipo, al di fuori dei due loop annidati.
type
Questo è loop2.c. La lunghezza della stringa si ottiene di volta in volta per ogni ciclo del loop esterno. Questa inefficienza dovrebbe manifestarsi nei tempi.
type
Accendiamo |_+_| programma e usa |_+_| per misurarne le prestazioni.
type
Ora facciamo lo stesso per |_+_|.
time
Questo ci ha dato due serie di risultati, ma sono in un formato davvero brutto. Possiamo fare qualcosa al riguardo in seguito, ma scegliamo alcune informazioni dai risultati.
Quando i programmi vengono eseguiti ci sono due modalità di esecuzione tra cui vengono scambiati avanti e indietro. Questi sono chiamati modalità utente e modalità kernel .
In breve, un processo in modalità utente non può accedere direttamente all'hardware o alla memoria di riferimento al di fuori della propria allocazione. Per ottenere l'accesso a tali risorse, il processo deve effettuare richieste al kernel. Se il kernel approva la richiesta, il processo entra in esecuzione in modalità kernel fino a quando il requisito non è stato soddisfatto. Il processo viene quindi riportato all'esecuzione in modalità utente.
Annuncio pubblicitarioI risultati per |_+_| dicci che |_+_| trascorso 0,09 secondi in modalità utente. Ha trascorso zero tempo in modalità kernel o il tempo in modalità kernel è un valore troppo basso per essere registrato una volta arrotondato per difetto. Il tempo totale trascorso è stato di 0,1 secondi. |_+_| ha ottenuto in media l'89% del tempo CPU per tutta la durata del tempo totale trascorso.
L'inefficiente |_+_| il programma ha impiegato tre volte di più per essere eseguito. Il suo tempo totale trascorso è di 0,3 secondi. La durata del tempo di elaborazione in modalità utente è di 0,29 secondi. Niente si sta registrando per la modalità kernel. |_+_| ha ottenuto in media il 96% del tempo della CPU per la durata della sua esecuzione.
Formattazione dell'output
Puoi personalizzare l'output da |_+_| utilizzando una stringa di formato. La stringa di formato può contenere testo e identificatori di formato. L'elenco degli identificatori di formato può essere trovato nella pagina man per |_+_|. Ciascuno degli identificatori di formato rappresenta un'informazione.
Quando la stringa viene stampata, gli identificatori di formato vengono sostituiti dai valori effettivi che rappresentano. Ad esempio, l'identificatore di formato per la percentuale di CPU è la lettera |_+_| . Indicare a |_+_| che un identificatore di formato non è solo una lettera normale, aggiungi un segno di percentuale, come |_+_| . Usiamolo in un esempio.
Il |_+_| (stringa di formato) è usata per dire |_+_| che ciò che segue è una stringa di formato.
La nostra stringa di formato stamperà i caratteri Program: e il nome del programma (e qualsiasi parametro della riga di comando che passi al programma). Il |_+_| identificatore di formato sta per Nome e argomenti della riga di comando del comando che viene cronometrato. Il |_+_| fa sì che l'output si sposti alla riga successiva.
Annuncio pubblicitarioEsistono molti identificatori di formato e fanno distinzione tra maiuscole e minuscole, quindi assicurati di inserirli correttamente quando lo fai da solo.
Successivamente, stamperemo i caratteri Tempo totale: seguito dal valore del tempo totale trascorso per questa esecuzione del programma (rappresentato da |_+_|).
Usiamo |_+_| per dare un'altra nuova linea. Quindi stamperemo i caratteri User Mode (s) , seguiti dal valore del tempo della CPU trascorso in modalità utente, indicato da |_+_|.
Usiamo |_+_| per dare un'altra nuova linea. Questa volta ci stiamo preparando per il valore dell'ora del kernel. Stampiamo i caratteri Kernel Mode (s) , seguiti dall'identificatore di formato per il tempo della CPU trascorso in modalità kernel, che è |_+_|.
Infine, stamperemo i caratteri |_+_|CPU: per darci una nuova riga e il titolo per questo valore di dati. Il |_+_| L'identificatore di formato fornirà la percentuale media del tempo CPU utilizzato dal processo a tempo.
L'intera stringa di formato è racchiusa tra virgolette. Avremmo potuto includere alcuni |_+_| caratteri per inserire tabulazioni nell'output se fossimo pignoli sull'allineamento dei valori.
time
Invio dell'output a un file
Per tenere traccia dei tempi dei test che hai effettuato puoi inviare l'output da |_+_| a un file. Per fare ciò usa il |_+_| (uscita) opzione. L'output del tuo programma verrà comunque visualizzato nella finestra del terminale. È solo l'output di |_+_| che viene reindirizzato al file.
Annuncio pubblicitarioPossiamo rieseguire il test e salvare l'output in |_+_| file come segue:
time
time
Il |_+_| l'output del programma viene visualizzato nella finestra del terminale e i risultati di |_+_| vai al |_+_| file.
Se vuoi catturare il prossimo set di risultati nello stesso file, devi usare |_+_| (aggiungi) l'opzione come segue:
time
time
Dovrebbe ora essere chiaro il motivo per cui abbiamo usato |_+_| identificatore di formato per includere il nome del programma nell'output della stringa di formato.
E siamo fuori tempo
Probabilmente di maggior utilità per programmatori e sviluppatori per mettere a punto il loro codice, il |_+_| comando è utile anche per chiunque voglia scoprire qualcosa in più su ciò che accade sotto il cofano ogni volta che si avvia un programma.
IMPARENTATO: I migliori laptop Linux per sviluppatori e appassionati
LEGGI SUCCESSIVO- › Funzioni e formule in Microsoft Excel: qual è la differenza?
- › La cartella del computer è 40: come la star di Xerox ha creato il desktop
- › Come trovare il tuo Spotify Wrapped 2021
- & rsaquo; Cyber Monday 2021: le migliori offerte tecnologiche
- › 5 siti Web che ogni utente Linux dovrebbe aggiungere ai segnalibri
- › Che cos'è la protezione anticaduta MIL-SPEC?
Dave McKay ha usato per la prima volta i computer quando era in voga il nastro di carta perforata, e da allora ha programmato. Dopo oltre 30 anni nel settore IT, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera ha lavorato come programmatore freelance, manager di un team internazionale di sviluppo software, project manager di servizi IT e, più recentemente, come Data Protection Officer. I suoi scritti sono stati pubblicati da howtogeek.com, cloudavvyit.com, itenterpriser.com e opensource.com. Dave è un evangelista di Linux e un sostenitore dell'open source.
Leggi la biografia completa