GNU/Linux >> Linux Esercitazione >  >> Linux

Esempi di comandi temporali di Linux

Ci sono momenti in cui potresti voler profilare il tuo programma su parametri come:

  • Tempo impiegato dal programma in modalità utente
  • Tempo impiegato dal programma in modalità kernel
  • Utilizzo medio della memoria da parte del programma
  • ecc

Su Linux abbiamo un'utilità "time" progettata specificamente per questo scopo. L'utilità "tempo" prende il nome di un programma come input e visualizza le informazioni sulle risorse utilizzate dal programma. Inoltre, se il comando esiste con uno stato diverso da zero, questa utility visualizza un messaggio di avviso e lo stato di uscita.

La sintassi di 'ora' è:

/usr/bin/time [options] program [arguments]

Nella sintassi precedente, "opzioni" si riferiscono a un insieme di flag/valori opzionali che possono essere passati all'utilità "tempo" per impostare o annullare una particolare funzionalità. Le seguenti sono le opzioni disponibili per il comando dell'ora:

  • -v, –verbose :questa opzione viene passata quando è richiesta una descrizione dettagliata dell'output.
  • –quite :questa opzione impedisce all'utilità "time" di segnalare lo stato del programma.
  • -f, –format :questa opzione consente all'utente di controllare il formato dell'output dell'utilità 'ora'.
  • -p, –portability :questa opzione imposta il seguente formato di output per rendere l'output conforme a POSIX
  • real %e
    user %U
    sys %S
  • -o FILE, –output=FILE :Questa opzione consente all'utente di reindirizzare l'output dell'utilità "time" a un file. Questa opzione consente all'utilità 'tempo' di sovrascrivere il file FILE.
  • -a, –append :questa opzione consente all'utilità "time" di aggiungere le informazioni al file FILE anziché sovrascriverlo.

Quando viene eseguito il comando 'time', il tipo di output che fornisce è il seguente:

# /usr/bin/time ls
anaconda-ks.cfg  bin  install.log  install.log.syslog  mbox
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 3888maxresident)k
0inputs+0outputs (0major+304minor)pagefaults 0swaps

Come possiamo vedere sopra, oltre all'esecuzione del comando, le ultime due righe dell'output sono le informazioni sulla risorsa che il comando "time" emette.

Nota:nell'esempio precedente, il comando "time" è stato eseguito senza alcuna opzione. Quindi questo è un output predefinito generato dal comando "time", che non è formattato correttamente.

Come possiamo vedere dall'output, il formato predefinito dell'output generato è :

%Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k
%Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps

L'opzione di formattazione

Questa opzione consente all'utente di decidere l'output generato dal comando "time". Nell'ultima sezione abbiamo discusso del formato predefinito utilizzato nell'output. In questa sezione impareremo come specificare formati personalizzati.

La stringa di formato di solito è costituita da "specificatori di risorse" intervallati da testo normale. Un segno di percentuale (`%') nella stringa di formato fa sì che il carattere seguente venga interpretato come identificatore di risorsa.

Una barra rovesciata (`\') introduce un `escape barra rovesciata', che viene tradotto in un singolo carattere di stampa al momento dell'output. `\t' emette un carattere di tabulazione, `\n' emette una nuova riga e `\\' emette una barra rovesciata. Una barra rovesciata seguita da qualsiasi altro carattere genera un punto interrogativo (`?') seguito da una barra rovesciata, per indicare che è stato assegnato un escape barra rovesciata non valido.

L'altro testo nella stringa di formato viene copiato testualmente nell'output. time stampa sempre una nuova riga dopo aver stampato le informazioni sull'utilizzo della risorsa, quindi normalmente le stringhe di formato non terminano con un carattere di nuova riga (o `0).

Ad esempio :

$ /usr/bin/time -f "\t%U user,\t%S system,\t%x status" date
Sun Jan 22 17:46:58 IST 2012
	0.00 user,	0.00 system,	0 status

Quindi vediamo che nell'esempio sopra, abbiamo provato a cambiare il formato di output utilizzando un formato di output diverso.

Risorse

Poiché abbiamo discusso in precedenza che l'utilità "tempo" mostra informazioni sull'utilizzo delle risorse da parte di un programma, in questa sezione elenchiamo le risorse che possono essere tracciate da questa utilità e gli specificatori corrispondenti.

Dalla pagina man :

  • C – Nome e argomenti della riga di comando del comando in fase di cronometraggio.
  • D – Dimensione media dell'area dati non condivisa del processo, in Kilobyte.
  • E – Tempo reale trascorso (orologio da parete) utilizzato dal processo, in [ore:]minuti:secondi.
  • F – Numero di errori di pagina gravi o che richiedono I/O che si sono verificati durante l'esecuzione del processo. Questi sono errori in cui la pagina è effettivamente migrata fuori dalla memoria principale.
  • I – Numero di input del file system da parte del processo.
  • K – Utilizzo di memoria totale medio (dati+stack+testo) del processo, in kilobyte.
  • M – Dimensione massima del set residente del processo durante la sua durata, in kilobyte.
  • O – Numero di output del file system dal processo.
  • P – Percentuale della CPU ottenuta con questo lavoro. Questo è solo il tempo utente + sistema diviso per il tempo di esecuzione totale. Stampa anche un segno di percentuale.
  • R – Numero di errori di pagina minori o risolvibili. Si tratta di pagine non valide (quindi peccaminose) ma che non sono state ancora rivendicate da altre pagine virtuali. Quindi i dati nella pagina sono ancora validi ma le tabelle di sistema devono essere aggiornate.
  • S – Numero totale di secondi CPU utilizzati dal sistema per conto del processo (in modalità kernel), in secondi.
  • U – Numero totale di secondi CPU utilizzati direttamente dal processo (in modalità utente), in secondi.
  • W – Numero di volte in cui il processo è stato sostituito dalla memoria principale.
  • X – Quantità media di testo condiviso durante il processo, in kilobyte.
  • Z – Dimensioni della pagina del sistema, in byte. Questa è una costante per sistema, ma varia tra i sistemi.
  • c – Numero di volte in cui il processo è stato modificato in modo involontario (perché l'intervallo di tempo è scaduto).
  • e – Tempo reale trascorso (orologio da parete) utilizzato dal processo, in secondi.
  • k – Numero di segnali inviati al processo.
  • p – 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 – Dimensione media dell'insieme residente del processo, in kilobyte.
  • w – Numero di volte in cui il programma è stato modificato volontariamente dal contesto, ad esempio durante l'attesa del completamento di un'operazione di I/O.
  • x – Stato di uscita del comando.

Quindi possiamo vedere che esiste un lungo elenco di risorse il cui utilizzo può essere monitorato dall'utilità "tempo".

Perché /usr/bin/time? (Invece del solo tempo)

Non usiamo /usr/bin/time e usiamo invece 'time'.

$ time -f "\t%U user,\t%S system,\t%x status" date
-f: command not found 

real	0m0.255s
user	0m0.230s
sys	0m0.030s

Come visto dall'output sopra, il comando "time" quando viene utilizzato senza il percorso completo (/usr/bin/time) emette un errore relativo al flag "-f". Anche il formato di output non è né quello specificato da noi nel comando né il formato predefinito di cui abbiamo discusso in precedenza. Ciò ha portato a una confusione su come è stato generato questo output.

Quando il comando "time" viene eseguito senza il percorso completo (/usr/bin/time), è il comando "time" integrato della shell bash che viene eseguito.

  • Usa 'man time' per visualizzare la pagina man di /usr/bin/time
  • Utilizza il "tempo di aiuto" per visualizzare le informazioni sul tempo di bash integrato.

Linux
  1. sa Esempi di comandi in Linux

  2. w Esempi di comandi in Linux

  3. ac Esempi di comandi in Linux

  4. Esempi di comandi df in Linux

  5. du Esempi di comandi in Linux

Comando wc Linux con esempi

Comando dell'ora di Linux

11 Esempi utili di comandi data di Linux

Esempi di comandi echo Linux

Esempi di comandi data di Linux

Esempi di comandi id in Linux