GNU/Linux >> Znalost Linux >  >> Linux

Příklady příkazů času Linux

Jsou chvíle, kdy možná budete chtít profilovat svůj program na parametry jako:

  • Čas strávený programem v uživatelském režimu
  • Čas strávený programem v režimu jádra
  • Průměrné využití paměti programem
  • atd

V Linuxu máme nástroj „čas“, který je navržen speciálně pro tento účel. Obslužný program „čas“ bere jako vstup název programu a zobrazuje informace o zdrojích, které program využívá. Pokud příkaz existuje s nenulovým stavem, tento nástroj zobrazí varovnou zprávu a ukončí stav.

Syntaxe ‚time‘ je:

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

Ve výše uvedené syntaxi „volby“ označují sadu volitelných příznaků/hodnot, které lze předat obslužnému programu „čas“ pro nastavení nebo zrušení nastavení konkrétní funkce. K dispozici jsou následující možnosti příkazu času:

  • -v, –verbose :Tato možnost se předá, když je vyžadován podrobný popis výstupu.
  • –docela :Tato možnost zabrání tomu, aby nástroj „čas“ hlásil stav programu.
  • -f, –format :Tato možnost umožňuje uživateli ovládat formát výstupu nástroje „čas“.
  • -p, –portability :Tato možnost nastaví následující výstupní formát, aby byl výstup v souladu s POSIX
  • real %e
    user %U
    sys %S
  • -o SOUBOR, –output=SOUBOR :Tato volba umožňuje uživateli přesměrovat výstup obslužného programu „čas“ do souboru. Tato možnost umožňuje nástroji „čas“ přepsat soubor FILE.
  • -a, –append :Tato možnost umožňuje obslužnému programu „čas“ připojit informace k souboru FILE namísto jejich přepisování.

Když je spuštěn příkaz „time“, následuje druh výstupu, který poskytuje:

# /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

Jak můžeme vidět výše, kromě provedení příkazu jsou poslední dva řádky výstupu informace o zdroji, které příkaz „time“ vydává.

Poznámka:Ve výše uvedeném příkladu byl příkaz „time“ spuštěn bez jakýchkoli voleb. Jedná se tedy o výchozí výstup generovaný příkazem „time“, který není správně naformátován.

Jak můžeme vidět z výstupu, výchozí formát generovaného výstupu je:

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

Možnost formátu

Tato možnost umožňuje uživateli rozhodnout o výstupu generovaném příkazem „time“. V minulé části jsme diskutovali o výchozím formátu, který se používá ve výstupu. Zde v této části se naučíme, jak specifikovat přizpůsobené formáty.

Formátovací řetězec se obvykle skládá ze „specifikátorů prostředků“ proložených prostým textem. Znak procenta (`%') ve formátovacím řetězci způsobí, že následující znak bude interpretován jako specifikátor zdroje.

Zpětné lomítko (`\') zavádí „únik zpětného lomítka“, který je na výstupu přeložen do jediného znaku pro tisk. "\t" vypíše znak tabulátoru, "\n" vygeneruje nový řádek a "\\" vygeneruje zpětné lomítko. Zpětné lomítko následované jakýmkoli jiným znakem vygeneruje otazník (`?‘) následovaný zpětným lomítkem, což znamená, že byl zadán neplatný návrat zpětného lomítka.

Ostatní text ve formátovacím řetězci se doslovně zkopíruje na výstup. time vždy po vytištění informací o využití zdroje vytiskne nový řádek, takže formátovací řetězce normálně nekončí znakem nového řádku (nebo `0).

Například:

$ /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

Vidíme tedy, že ve výše uvedeném příkladu jsme se pokusili změnit výstupní formát pomocí jiného výstupního formátu.

Zdroje

Protože jsme diskutovali výše, že nástroj „čas“ zobrazuje informace o využití zdrojů programem, v této části uvádíme seznam zdrojů, které lze tímto nástrojem sledovat, a odpovídající specifikátory.

Z manuálové stránky :

  • C – Název a argumenty příkazového řádku časovaného příkazu.
  • D – Průměrná velikost oblasti nesdílených dat procesu v kilobajtech.
  • E – Uplynulý skutečný čas (nástěnné hodiny) použitý procesem v [hodinách:]minutách:sekundách.
  • F – Počet hlavních chyb stránky nebo chyb vyžadujících vstup/výstup, ke kterým došlo během běhu procesu. Jedná se o chyby, kdy stránka skutečně migrovala z primární paměti.
  • I – Počet vstupů systému souborů podle procesu.
  • K – Průměrné celkové využití paměti (data+zásobník+text) procesem v kilobajtech.
  • M – Maximální velikost rezidentní sady procesu během jeho životnosti v kilobajtech.
  • O – Počet výstupů systému souborů podle procesu.
  • P – Procento CPU, které tato úloha získala. Toto je pouze čas uživatele + systém vydělený celkovou dobou běhu. Vytiskne také znak procenta.
  • R – Počet menších nebo obnovitelných chyb stránky. Jsou to stránky, které nejsou platné (takže vadí), ale které ještě nebyly nárokovány jinými virtuálními stránkami. Data na stránce jsou tedy stále platná, ale systémové tabulky je třeba aktualizovat.
  • S – Celkový počet sekund CPU, které systém používá jménem procesu (v režimu jádra), v sekundách.
  • U – Celkový počet sekund CPU, které proces přímo spotřeboval (v uživatelském režimu), v sekundách.
  • W – Počet, kolikrát byl proces vyměněn z hlavní paměti.
  • X – Průměrné množství sdíleného textu v procesu v kilobajtech.
  • Z – velikost stránky systému v bajtech. Toto je konstanta pro každý systém, ale liší se mezi systémy.
  • c – Počet případů, kdy byl proces nedobrovolně přepnut do kontextu (protože vypršel časový úsek).
  • e – Uplynulý skutečný čas (nástěnné hodiny) použitý procesem v sekundách.
  • k – Počet signálů doručených procesu.
  • p – Průměrná velikost nesdíleného zásobníku procesu v kilobajtech.
  • r – Počet zpráv soketu přijatých procesem.
  • s – Počet zpráv soketu odeslaných procesem.
  • t – Průměrná velikost rezidentní sady procesu v kilobajtech.
  • w – Počet případů, kdy byl program dobrovolně přepnut z kontextu, například při čekání na dokončení I/O operace.
  • x – stav ukončení příkazu.

Vidíme tedy, že existuje dlouhý seznam zdrojů, jejichž využití lze sledovat pomocí nástroje „čas“.

Proč /usr/bin/time? (Místo času)

Nepoužívejme /usr/bin/time a místo toho použijte ‘čas’.

$ 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

Jak je vidět z výše uvedeného výstupu, příkaz „time“ při použití bez úplné cesty (/usr/bin/time) vyplivne chybu týkající se příznaku „-f“. Formát výstupu není ani ten, který jsme zadali v příkazu, ani výchozí formát, o kterém jsme hovořili dříve. To vedlo ke zmatku ohledně toho, jak byl tento výstup generován.

Když je příkaz „time“ proveden bez úplné cesty (/usr/bin/time), jedná se o vestavěný příkaz „time“ shellu bash, který se spustí.

  • K zobrazení manuálové stránky /usr/bin/time použijte 'man time'
  • Pomocí „čas nápovědy“ zobrazíte informace o vestavěném čase bash.

Linux
  1. 7 Příklady příkazů Linux df

  2. 8 Příklady příkazů Linux TR

  3. Příklady příkazů rm v Linuxu

  1. Příklady příkazů ps v Linuxu

  2. w Příklady příkazů v Linuxu

  3. Příklady příkazů timedatectl v Linuxu

  1. 12 UNIX / Linux Příklady možností výstupního formátu časového příkazu

  2. sa Příklady příkazů v Linuxu

  3. Příklady příkazů uptime v Linuxu