Metode de plată Abuse

Comanda Time în Linux

18.03.2022, 01:39

Uneori, atunci când lucrați cu terminalul Linux, trebuie să știți timpul de execuție al anumitor comenzi, de exemplu, pentru a depista problemele. Există un utilitar numit time pentru acest scop. Vă vom spune cum funcționează comanda Linux time și care este sintaxa sa. Apoi vom trece la descrierea opțiunilor disponibile. Iar la final vom menționa câteva scenarii populare de utilizare.

Sintaxă și opțiuni

Utilitarul rulează o comandă definită de utilizator și apoi afișează informații despre timpul său de execuție. Sintaxa sa este destul de convenabilă. Mai întâi trebuie să specificați opțiunile pentru timp, apoi comanda care urmează să fie executată și, în final, argumentele pentru aceasta:

$ time [options] command_to_execute [arguments]

Să luăm în considerare lista de opțiuni disponibile:

  • -o, --output - salvează datele în fișierul selectat în loc de ieșirea standard din terminal. În acest caz, datele vechi din fișier vor fi suprascrise.
  • -a, --append - adaugă informații noi la fișier în loc să le suprascrie pe cele vechi. Opțiunea este utilă numai în combinație cu -o.
  • -f, --format - selectează un anumit format de ieșire. Detalii despre formatare sunt descrise în secțiunea următoare a acestui articol.
  • -p, --profitably - utilizează un format de ieșire a datelor în conformitate cu standardul POSIX 1003.2.
  • -v, --verbose - emite informații detaliate despre execuția programului.
  • -V, --version - emite versiunea utilitarului de timp.

Această listă conține doar opțiunile de bază. Puteți obține informații detaliate cu ajutorul comenzii:

$ man time

Opțiuni de formatare a ieșirii

În mod implicit , time poate emite informații într-o formă care nu este confortabilă pentru citire,

Este de dorit să setați opțiuni de formatare a ieșirii pentru acesta, care vor fi discutate acum. Există trei dintre ele în total. Să luăm comanda apt-get update ca exemplu.

Opțiunea -v este utilizată pentru a afișa informații detaliate:

$ sudo time -v apt-get update

Opțiunea -p este necesară pentru a afișa datele într-un format compatibil cu POSIX 1003.2:

$ sudo time -p apt-get update

Linia de date de formatare include de obicei specificatori de resurse și text simplu. Semnul % indică faptul că caracterul care îl urmează trebuie să fie tratat ca un specificator de resurse.

Semnul este utilizat pentru a specifica caracterul delimitator. Există trei opțiuni disponibile: t - tab, n - linie nouă, \\ - bară oblică inversă. Dacă specificați orice alt caracter după , terminalul va afișa un semn de întrebare (?), care indică o eroare de introducere.

Restul textului din șirul de format este copiat complet în câmpul de ieșire. În acest caz, time începe întotdeauna să emită date de pe o linie nouă, după informațiile despre executarea comenzii propriu-zise.

Să luăm în considerare specificatorii de resurse disponibili:

  • % - % literal. adică pentru a emite un semn procentual trebuie să specificați %% în comandă.
  • C - numele comenzii și argumentele utilizate.
  • D - dimensiunea medie a zonei de date nedivizate. Aceasta este afișată în kilobyți.
  • E - ora reală de execuție a comenzii în formatul obișnuit de ore. Este afișat ca [Hours:]<imutes:seconds.
  • N - numărul de erori majore sau de I/O care au apărut în timpul executării procesului.
  • I - numărul de accesări ale sistemului de fișiere.
  • K - valoarea medie a memoriei utilizate pentru cod(text), date inițializate(data) șistivă (stack). Se afișează în kilobytes.
  • M - dimensiunea maximă a setului rezident în timpul executării procesului în kilobytes.
  • O - numărul de ieșiri din sistemul de fișiere.
  • P - procentul de încărcare a CPU (unitate centrală de procesare).
  • R - numărul de erori minore.
  • S - timpul în secunde în care CPU a fost utilizat de sistem în numele procesului în modul supervisor(modulkernel).
  • U - timpul în secunde în care CPU a fost utilizat de proces direct în modulutilizator.
  • W - de câte ori a fost descărcat procesul din RAM.
  • Z - dimensiunea paginii de sistem. Această valoare este o constantă, dar variază între sisteme.
  • c - numărul de schimbări involuntare de context în timpul executării procesului.
  • e - timpul real de execuție a comenzii în formatul orar obișnuit. Acesta este afișat în secunde.
  • k - numărul de semnale care au ajuns la proces.
  • p - dimensiunea medie a stivei neîmpărțite a procesului, în kilobytes.
  • r - numărul de mesaje socket primite.
  • s - numărul de mesaje socket trimise.
  • t - dimensiunea medie a setului rezident al procesului, în kilobytes.
  • w - numărul de schimbări voluntare de context în timpul executării procesului
  • x - codul de retur pentru comandă.

Aceștia au fost toți specificatorii de resurse utilizați la alegerea formatării pentru timp. Acum să trecem la scenariile de utilizare a comenzii.

Timpul de execuție a comenzii LINUX

Să ne uităm la trei exemple de bază care sunt destul de frecvent utilizate: ieșire către terminal, ieșire către un fișier separat și ieșire cu formatare.

Ieșirea timpului de execuție la terminal

Ca exemplu vom lua comanda sleep, care face pauză pentru un timp specificat. Va fi un exemplu foarte clar, deoarece timpul de pauză va coincide cu timpul de execuție a comenzii în timp:

$ time sleep 3

Timpul este scris imediat în trei coloane. Să trecem prin fiecare dintre ele:

real - timpul total de la începutul executării procesului până la finalizarea acestuia.

user - timpul în care procesul a fost executat în modulutilizator.

sys - timpul în care procesul a fost implicat în modul supervizor(modulkernel).

Următorul scenariu util este de a emite timpul necesar pentru încărcarea antetului unei pagini web prin intermediul utilitarului curl. Să luăm site-ul nostru web ca exemplu:

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

Trebuie să menționăm o situație în care executarea comenzii pune fereastra terminalului într-un mod diferit, cum ar fi atunci când executați editorul nano pentru a modifica fișierul /home/root-user/script.txt:

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

După ce editorul se termină, veți vedea timpul total în care ați lucrat la fișier.

Acum știți cum să vedeți timpul de execuție al unei comenzi Linux.

Rezultatul fișierului

Informațiile despre rezultatele comenzii time pot fi salvate într-un fișier separat folosind opțiunea-o. În acest caz, ele nu vor fi afișate în fereastra terminalului. Să luăm exemplul extragerii conținutului arhivei ~/data/data.tar.gz cu ajutorul utilitarului tar. Să salvăm informațiile despre timpul de execuție într-un nou fișier ~/data/data_data_time.txt. De asemenea, vom adăuga opțiunea-v la comandă pentru a obține informații detaliate:

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

Fișierul va avea următorul conținut.

Dacă utilizați opțiunea -o, rețineți că aceasta suprascrie informațiile vechi din fișierul de ieșire cu informațiile noi. Acest lucru este aplicabil la crearea de noi fișiere, dar nu este potrivit pentru logare. Cu opțiunea opțională -a, suprascrierea conținutului este înlocuită de adăugarea de informații noi:

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

Ieșire cu formatare

Opțiunea originală de formatare a datelor nu este adecvată în toate cazurile. Ca exemplu, vom lua comanda utilizată anterior pentru extragerea unei arhive, dar nu vom salva datele într-un fișier. Atunci când o executăm, suntem interesați de:

  • Informații despre comanda în sine și opțiunile date - acesta este specificatorul%C.
  • Încărcarea CPU - specificator%P.
  • Timpul total de execuție în secunde - specificatorul%e.

Pentru o percepție confortabilă, fiecare element va fi afișat pe o linie separată folosind separatorul n. În același timp, toate vor fi semnate într-un mod ușor de înțeles.

Iată cum arată versiunea finală a comenzii:

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

Tot textul, cu excepția caracterelor de după %, este afișat complet în terminal. Acesta este un mod convenabil de a marca