Fizetési módok Abuse

Time parancs Linuxban

18.03.2022, 01:39

A Linux terminállal való munka során néha szükségünk van bizonyos parancsok végrehajtásának idejére, például a problémák felderítéséhez. Erre a célra létezik egy time nevű segédprogram. Elmondjuk, hogyan működik a Linux time parancs, és mi a szintaxisa. Ezután rátérünk a rendelkezésre álló opciók leírására. A végén pedig megemlítünk néhány népszerű felhasználási forgatókönyvet.

Szintaxis és opciók

A segédprogram lefuttat egy felhasználó által definiált parancsot, majd megjeleníti a végrehajtási idejéről szóló információkat. Szintaxisa meglehetősen kényelmes. Először meg kell adnia az időre vonatkozó opciókat, majd a végrehajtandó parancsot, végül pedig a hozzá tartozó argumentumokat:

$ time [options] command_to_execute [arguments]

Nézzük a rendelkezésre álló opciók listáját:

  • -o, --output - az adatok mentése a terminál standard kimenete helyett a kiválasztott fájlba. Ebben az esetben a fájlban lévő régi adatok felülíródnak.
  • -a, --append - új adatok hozzáadása a fájlhoz a régi adatok felülírása helyett. Az opció csak a -o kapcsolóval együtt használható.
  • -f, --format - egy adott kimeneti formátum kiválasztása. A formázás részleteit a cikk következő szakasza ismerteti.
  • -p, --profitably - a POSIX 1003.2 szabványnak megfelelő adatkimeneti formátum használata.
  • -v, --verbose - részletes információk kiadása a program végrehajtásáról.
  • -V, --version - a time segédprogram verziójának kiadása.

Ez a lista csak az alapvető opciókat tartalmazza. Részletes információkat a paranccsal kaphat:

$ man time

Kimeneti formázási opciók

Alapértelmezés szerint a time olyan formában adhat ki információkat, amely nem kényelmes olvasásra,

Kívánatos a kimeneti formázási opciókat beállítani számára, amelyeket most tárgyalunk. Ezekből összesen három van. Vegyük példának az apt-get update parancsot.

A -v opciót a részletes információk kiadására használjuk:

$ sudo time -v apt-get update

A -p opcióra az adatok POSIX 1003.2 szabványnak megfelelő formátumban történő kiadásához van szükség:

$ sudo time -p apt-get update

A formázási adatsor jellemzően erőforrás-meghatározókat és egyszerű szöveget tartalmaz. A % jel azt jelzi, hogy az azt követő karaktert erőforrás-meghatározóként kell kezelni.

A jel az elhatároló karakter megadására szolgál. Három lehetőség áll rendelkezésre: t - tabulátor, n - új sor, \\ - backslash. Ha az után más karaktert ad meg, a terminál egy kérdőjelet (?) fog megjeleníteni, ami beviteli hibát jelez.

A formázó karakterláncban lévő szöveg többi része teljes egészében átmásolódik a kimeneti mezőbe. Ebben az esetben a time mindig egy új sorból kezdi meg az adatok kiadását a parancs végrehajtásáról szóló információ után maga a parancs.

Nézzük meg a rendelkezésre álló erőforrás-specifikátorokat:

  • % - szó szerinti %. azaz a százalékjel kimenetéhez a parancsban meg kell adni a %% -ot.
  • C - a parancs neve és a felhasznált argumentumok.
  • D - az osztatlan adatterület átlagos mérete. Kilobájtban jelenik meg.
  • E - a parancs végrehajtásának valós ideje a szokásos órai formátumban. Ez a következő formában jelenik meg: [Óra:]<perc:másodperc.
  • N - a folyamat végrehajtása során bekövetkezett fő- vagy I/O-hibák száma.
  • I - a fájlrendszerhez való hozzáférések száma.
  • K - a kód(szöveg), az inicializált adatok(data) és averem (stack) által használt memória átlagos értéke. Kilobájtban jelenik meg.
  • M - a folyamat végrehajtása során a rezidenskészlet maximális mérete kilobájtban.
  • O - a fájlrendszer kilépések száma.
  • P - a CPU (központi feldolgozó egység) terhelésének százalékos aránya.
  • R - a kisebb hibák száma.
  • S - az az idő másodpercben, amely alatt a CPU-t a rendszer a folyamat nevében supervisor módban(kernel módban) használta.
  • U - az az idő másodpercben, amely alatt a CPU-t közvetlenül a folyamat használtafelhasználói módban.
  • W - a folyamat hányszor került ki a RAM-ból.
  • Z - a rendszeroldalak mérete. Ez az érték állandó, de rendszerenként változik.
  • c - a folyamat végrehajtása közbeni önkéntelen kontextusváltások száma.
  • e - a parancsvégrehajtás valós ideje a szokásos órai formátumban. Másodpercekben jelenik meg.
  • k - a folyamatot elért jelek száma.
  • p - a folyamat nem megosztott veremének átlagos mérete kilobájtban.
  • r - a fogadott socket üzenetek száma.
  • s - az elküldött socket üzenetek száma.
  • t - a folyamat rezidenskészletének átlagos mérete kilobájtban.
  • w - a folyamat végrehajtása során önkéntes kontextusváltások száma.
  • x - a parancs visszatérési kódja.

Ezek voltak az összes erőforrás-specifikátor, amelyet az idő formázásának kiválasztásakor használtunk. Most térjünk át a parancs használatának forgatókönyveire.

LINUX parancs végrehajtási ideje

Nézzünk három alapvető példát, amelyeket elég gyakran használnak: kimenet a terminálra, kimenet külön fájlba, és kimenet formázással.

A futásidő kiadása a terminálba

Példaként a sleep parancsot vesszük, amely egy megadott időre szünetet tart. Ez egy nagyon egyértelmű példa lesz, mert a szünet ideje időben egybeesik a parancs végrehajtásának idejével:

$ time sleep 3

Az időt rögtön három oszlopban írjuk ki. Nézzük végig az egyes oszlopokat:

real - a folyamat végrehajtásának kezdetétől a befejezéséig eltelt teljes idő.

user - az az idő, amely alatt a folyamatfelhasználói módban futott.

sys - az az idő, amely alatt a folyamat supervisor módban(kernel módban) vett részt.

A következő hasznos forgatókönyv a curl segédprogrammal egy weblap fejlécének betöltéséhez szükséges idő kiadása. Vegyük példának a weboldalunkat:

$ time curl -I https://losst.ru

Meg kell említenünk egy olyan helyzetet, amikor a parancs végrehajtása a terminálablakot más üzemmódba helyezi, például amikor a nano szerkesztőprogramot futtatjuk a /home/root-user/script.txt fájl módosítására:

$ time nano /home/root-user/scripts/main_script.txt

A szerkesztő befejezése után megjelenik a fájlon végzett munka teljes időtartama.

Most már tudja, hogyan láthatja egy Linux-parancs végrehajtási idejét.

A fájl kimenete

Az time parancs eredményéről szóló információkat az-o opcióval egy külön fájlba menthetjük. Ebben az esetben nem jelennek meg a terminál ablakban. Vegyük példának a ~/data/data.tar.gz archívum tartalmának a tar segédprogrammal történő kicsomagolását. Mentse el a végrehajtási időre vonatkozó információkat egy új ~/data/data_data_data_time.txt fájlba. A parancshoz hozzáadjuk a-v opciót is, hogy részletes információkat kapjunk:

$ sudo time -v -o ~/data/data_time.txt tar -xvf ~/data/data.tar.gz -C ~/data

A fájl tartalma a következő lesz.

Ha a -o opciót használjuk, ne feledjük, hogy a kimeneti fájlban lévő régi információt felülírja az új információval. Ez új fájlok létrehozásakor alkalmazható, de naplózásra nem alkalmas. Az opcionális -a opcióval a tartalom felülírása helyett új információt adunk hozzá:

$ sudo time -v -a -o ~/data/data_time.txt tar -xvf ~/data/data.tar.gz -C ~/data

Kimenet formázással

Az adatok formázásának eredeti opciója nem minden esetben alkalmas. Példaként vegyük a korábban használt parancsot egy archívum kivonására, de az adatokat nem mentjük el egy fájlba. Végrehajtásakor érdekel bennünket:

  • Információ magáról a parancsról és a megadott opciókról - ez a specifikáló%C.
  • A processzor terhelése - a specifikáló%P.
  • A teljes végrehajtási idő másodpercekben - specifikáló%e.

A kényelmes érzékelés érdekében minden egyes elem külön sorban jelenik meg a n elválasztójel segítségével. Ugyanakkor mindegyiket érthető módon írjuk alá.

Így néz ki a parancs végleges változata:

sudo time -f "Command info:n%CnCPU usage: %PnExecution time: %e sec" tar -xvf ~/data/data.tar.gz -C ~/data

A % utáni karakterek kivételével minden szöveg teljes egészében megjelenik a terminálon. Ez egy kényelmes módja a jelölésnek