A time parancs használata

Linux kezdő
Linux kezdő

A time parancs egy érdekes kis eszköz, amivel egy-egy program lefutási idejét mérhetjük. Bár így első olvasatban egyszerűnek tűnik, de a használatához kell pár alapismeret. Lényegében úgy gondolhatunk rá, mint a terminálba beépített stopperóra, amivel mérni lehet, hogy mennyi idő szükséges egy megadott Linux parancs végrehajtásához. Ez nem egy mindennapi feladat, de időnként előkerül. Vagy csak azért mert érdekel, vagy két azonos funkciójú műveletet szeretnénk időben összehasonlítani. Bár egy-egy egyszerű művelet villámgyorsan lefut, esetileg szeretnénk, ha objektíven összehasonlítható lenne.
Amit kiemelnék: time parancs az időt méri, de másra nem ad támpontot. Sok esetben egy másik mérhető paraméter jobban szemlézi a feladat hatékonyságát. Egy tömörítésnél jellemzően érdekes a tömörítési idő, de azért a célunk lehet a nagyobb tömörítés. Így kezeljük a time parancs eredményét a helyén!

A Bash, zsh time parancs

Ahogy már sejthető, van másféle is, és maga a time parancs esetleges kimenete eltérhet shell-enként is. A bemutatott példa zsh alatt fut majd és a kimenete:

time upall

user=0,62s system=0,04s cpu=14% total=4,583

Látható, hogy a használata egyszerű, megadjuk, a time parancs után a mérendő parancsot. Ez lehet alias is. Itt az upall egy alias a rendszerfrissítésre.

Az értelmezése is egyszerű:

total – a parancs futtatásához szükséges tényleges idő
CPU – CPU terhelés
user – a CPU felhasználói módban töltött ideje
system – a CPU kernel módban töltött ideje

Gyakorlatilag az első kettő ami érdekes szokott lenni. Már sejthető, hogy senkinek nem okoz majd gondot a használata.

Ha kipróbálod, hogy time -h, vagy time –help, akkor hibát kapsz, azaz itt nincs semmi extra kapcsoló, vagy olyan, amivel finomíthatod a mérést.

GNU time

Igen, van egy shell-től független parancs is. Amit a /usr/bin/time megadásával indíthatunk el. Nem feltétlen lesz fenn a gépeden, így ha kell a rendszerednek megfelelő mód telepíteni kell. Ez már hagyományosabb értelemben program és ennek van helpje.

Itt a megkülönböztethetőség miatt a

/usr/bin/time takaritas.sh

megoldást kell használni. Alias-t alapból nem fogad, így ha a GNU time parancsot akarod használni, akkor az alias helyett használj szkriptet.

1.08user 0.12system 0:06.07elapsed 19%CPU (0avgtext+0avgdata 62292maxresident)k
0inputs+6384outputs (0major+40119minor)pagefaults 0swaps

Ahogy látni a kimenete kissé összetettebb, mint az előbbinek, de ezen segíthetünk. A help kapcsolóval megkapjuk a lehetséges formázási módot, így már csak az kerül elő ami neked kell:

%% a literal ‘%’
%C command line and arguments
%c involuntary context switches
%E elapsed real time (wall clock) in [hour:]min:sec
%e elapsed real time (wall clock) in seconds
%F major page faults
%M maximum resident set size in KB
%P percent of CPU this job got
%R minor page faults
%S system (kernel) time in seconds
%U user time in seconds
%w voluntary context switches
%x exit status of command

Így ha csak pár adat kell a kimenetet jól formázhatjuk:

/usr/bin/time -f %E takaritas.sh

Így a kimenet kicsit bénán néz ki (0:02.83), ha nem tudjuk, mit akartunk, akkor ez csak egy szám, ami lehet bármi is. De erre is felkészítették a GNU time parancsot

usr/bin/time -f Futás:_%Esec takaritas.sh

Futás:_0:02.83sec

Ezt fokozni is lehet, szép hosszú kimeneteket rakhatunk össze, amivel az összes kívánt adatok közt azt kapjuk amire kíváncsiak vagyunk. Teljesebb képet ad a program idő és CPU stb. használatáról. De van lehetőség a kimetetét egy fájlba írányítani, így egy periódikusan (pld. cron) lefutó teendő idejét logolni tudod.

Nem csak parancssori parancsok, szkriptek mérésére alkalmas, de ha terminálból indítod pld:

/usr/bin/time kdenlive

akkor nem csak futásidőkről, de a CPU használatról is kaphatsz infót.

Ha pedig csak simán a GNU time parancsot a megszokott három adat kijelzésére akarod használni, akkor:

usr/bin/time -p takaritas.sh

és a kimenete:

real 6.47
user 1.05
sys 0.15

lesz.

Érdemes pár próbálkozással begyakorolni, mert nem egy minden nap használt parancs a time, de időnként hasznos lehet. Letöltések, nagyobb programfordítások, szkriptek idejét jól le lehet mérni vele. Így nem csak a megszokott „xyz” gyorsabb kitétel kerülhet egy bejegyzésbe, hanem konkrét adatokkal is alátámaszthatjuk az állításunkat. Ami kissé hitelesebb, mint az esetlegesen szubjektív értékelés.

Nem váltod mrg a világot vele, csak kicsit jobban megismered a Linux rendszert és a müködését mérni tudod.

Related Posts