GNU/Linux >> Linux Esercitazione >  >> Linux

Trova il tempo di esecuzione di un comando o di un processo in Linux

Probabilmente conosci l'ora di inizio di un comando/processo e per quanto tempo è in esecuzione un processo in sistemi simili a Linux e Unix. Ma come fai a sapere quando è terminato il comando o il processo e/o qual è il tempo totale impiegato dal comando/processo per essere completato? Bene, è facile! Sui sistemi simili a Unix, esiste un'utilità denominata 'GNU time' che è appositamente progettato per questo scopo. Utilizzando l'utilità Time, possiamo facilmente misurare il tempo totale di esecuzione di un comando o programma nei sistemi operativi Linux. La cosa buona è che il comando "time" è preinstallato nella maggior parte delle distribuzioni Linux, quindi non devi preoccuparti dell'installazione.

Trova il tempo di esecuzione di un comando o processo in Linux

Per misurare il tempo di esecuzione di un comando/programma, basta eseguirlo.

$ /usr/bin/time -p ls

Oppure,

$ time ls

Risultato di esempio:

dir1 dir2 file1 file2 mcelog

real 0m0.007s
user 0m0.001s
sys 0m0.004s
$ time ls -a
. .bash_logout dir1 file2 mcelog .sudo_as_admin_successful
.. .bashrc dir2 .gnupg .profile .wget-hsts
.bash_history .cache file1 .local .stack

real 0m0.008s
user 0m0.001s
sys 0m0.005s

I comandi precedenti mostrano il tempo di esecuzione totale di 'ls ' comando. Sostituisci "ls " con qualsiasi comando/processo di tua scelta per trovare il tempo di esecuzione totale.

Ecco,

  1. real -riferisce il tempo totale impiegato dal comando/programma,
  2. user - fa riferimento al tempo impiegato dal programma in modalità utente,
  3. sys - fa riferimento al tempo impiegato dal programma in modalità kernel.

Possiamo anche limitare l'esecuzione del comando solo per un certo tempo. Fare riferimento alla seguente guida per maggiori dettagli.

  • Come eseguire un comando per un periodo di tempo specifico in Linux

ora rispetto a /usr/bin/ora

Come avrai notato, abbiamo usato due comandi 'time' e '/usr/bin/time ' negli esempi precedenti. Quindi, potresti chiederti qual è la differenza tra loro.

Per prima cosa, vediamo cosa effettivamente è 'time ' sta usando 'type ' comando. Per chi non lo sapesse, il Tipo comando viene utilizzato per trovare le informazioni su un comando Linux. Per maggiori dettagli, consulta questa guida .

$ type -a time
time is a shell keyword
time is /usr/bin/time

Come puoi vedere nell'output sopra, il tempo è entrambi,

  • Una parola chiave integrata nella shell BASH
  • Un file eseguibile, ad esempio /usr/bin/time

Poiché le parole chiave della shell hanno la precedenza sui file eseguibili, quando esegui solo time comando senza percorso completo, esegui un comando shell integrato. Tuttavia, quando esegui /usr/bin/time , corri un vero tempo GNU programma. Quindi, per accedere al comando reale, potrebbe essere necessario specificare il suo percorso esplicito. Chiaro? Bene!

La parola chiave shell "time" incorporata è disponibile nella maggior parte delle shell come BASH, ZSH, CSH, KSH, TCSH ecc. La parola chiave shell "time" ha meno opzioni rispetto agli eseguibili. L'unica opzione che puoi utilizzare nella parola chiave 'tempo' è -p .

Ora sai come trovare il tempo di esecuzione totale di un dato comando/processo usando il comando 'time'. Vuoi saperne di più sull'utilità 'GNU time'? Continua a leggere!

Una breve introduzione sul programma 'GNU time'

Il programma orario GNU esegue un comando/programma con argomenti dati e riassume l'utilizzo delle risorse di sistema come output standard dopo che il comando è stato completato. A differenza della parola chiave 'tempo', il programma orario GNU non mostra solo l'ora utilizzata dal comando/processo, ma anche altre risorse come memoria, I/O e chiamate IPC.

La sintassi tipica del comando Time è:

/usr/bin/time [options] command [arguments...]

Le "opzioni" nella sintassi precedente si riferiscono a un insieme di flag che possono essere utilizzati con il comando time per eseguire una particolare funzionalità. L'elenco delle opzioni disponibili è riportato di seguito.

  • -f , --format - Usa questa opzione per specificare il formato di output che desideri.
  • -p , --portability - Usa il formato di output portatile.
  • -o file, --output =FILE - Scrive l'output in FILE invece di essere visualizzato come output standard.
  • -a , --append - Aggiungi l'output al FILE invece di sovrascriverlo.
  • -v , --verbose - Questa opzione mostra la descrizione dettagliata dell'output dell'utilità 'tempo'.
  • --quiet - Questa opzione impedisce all'utility time 'time' di segnalare lo stato del programma.

Quando usi il programma 'GNU time' senza alcuna opzione, vedrai un output come di seguito.

$ /usr/bin/time wc /etc/hosts
9 28 273 /etc/hosts
0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k
0inputs+0outputs (0major+73minor)pagefaults 0swaps

Se esegui lo stesso comando con la parola chiave incorporata nella shell 'time', l'output sarebbe leggermente diverso:

$ time wc /etc/hosts
9 28 273 /etc/hosts

real 0m0.006s
user 0m0.001s
sys 0m0.004s

A volte, potresti voler scrivere l'output dell'utilizzo delle risorse di sistema in un file anziché visualizzarlo nel Terminale. Per farlo, usa -o segnala come sotto.

$ /usr/bin/time -o file.txt ls
dir1 dir2 file1 file2 file.txt mcelog

Come puoi vedere nell'output, l'utilità Time non mostra l'output. Perché scriviamo l'output in un file chiamato file.txt . Diamo un'occhiata a questo file:

$ cat file.txt 
0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2512maxresident)k
0inputs+0outputs (0major+106minor)pagefaults 0swaps

Quando usi -o flag, se non esiste un file chiamato 'file.txt', creerà e scriverà l'output al suo interno. Se il file.txt è già presente, ne sovrascriverà il contenuto.

Puoi anche aggiungere l'output al file invece di sovrascriverlo utilizzando -a bandiera.

$ /usr/bin/time -a file.txt ls

Il -f flag consente agli utenti di controllare il formato dell'output a proprio piacimento. Supponiamo, ad esempio, che il comando seguente mostri l'output di 'ls ' e mostra solo l'utente, il sistema e il tempo totale.

$ /usr/bin/time -f "\t%E real,\t%U user,\t%S sys" ls
dir1 dir2 file1 file2 mcelog
0:00.00 real, 0.00 user, 0.00 sys

Tieni presente che il comando di shell integrato 'time' non supporta tutte le funzionalità del programma orario GNU.

Per maggiori dettagli sull'utilità GNU time, fare riferimento alle pagine man.

$ man time

Per saperne di più sulla parola chiave "Time" incorporata in Bash, esegui:

$ help time

Linux
  1. Pianifica un'attività con il comando Linux at

  2. Padroneggia il comando ls di Linux

  3. trova Esempi di comandi in Linux

  4. Una guida al comando "Trova" di Linux

  5. Che cos'è un comando per trovare la priorità del processo in Linux?

Come modificare la priorità di un processo in Linux

Come trovare file con il comando fd in Linux

Il comando timer in Linux

15 esempi super utili del comando Trova in Linux

Comprendere il comando dell'ora in Linux

Il comando Trova Directory di Linux:spiegato