Betalingsmåter Abuse

Time-kommando i Linux

18.03.2022, 01:39

Noen ganger når du arbeider med Linux-terminalen, trenger du å vite tidspunktet for utførelsen av visse kommandoer, for eksempel for å spore opp problemer. Det er et verktøy som heter time for dette formålet. Vi vil fortelle deg hvordan Linux-tidskommandoen fungerer og hva syntaksen er. Deretter går vi videre til beskrivelsen av de tilgjengelige alternativene. Til slutt nevner vi noen populære bruksscenarier.

Syntaks og alternativer

Verktøyet kjører en brukerdefinert kommando og viser deretter informasjon om utførelsestiden. Syntaksen er ganske praktisk. Først må du spesifisere alternativene for tid, deretter kommandoen som skal utføres, og til slutt argumentene til den:

$ time [options] command_to_execute [arguments]

La oss se på listen over tilgjengelige alternativer:

  • -o, --output - lagre data i den valgte filen i stedet for standardutgangen i terminalen. I dette tilfellet vil de gamle dataene i filen bli overskrevet.
  • -a, --append - legger til ny informasjon i filen i stedet for å overskrive den gamle. Alternativet er bare nyttig i kombinasjon med -o.
  • -f, --format - velg et bestemt utdataformat. Detaljer om formatering er beskrevet i neste avsnitt av denne artikkelen.
  • -p, --profitably - bruk et datautdataformat som er i samsvar med POSIX 1003.2-standarden.
  • -v, --verbose - skriver ut detaljert informasjon om kjøringen av programmet.
  • -V, --version - skriver ut versjonen av tidsverktøyet.

Denne listen inneholder bare de grunnleggende alternativene. Du kan få detaljert informasjon med kommandoen:

$ man time

Alternativer for utdataformatering

Som standard kan time skrive ut informasjon i en form som ikke er behagelig å lese,

Det er ønskelig å angi alternativer for utdataformatering, som vil bli diskutert nå. Det er tre av dem totalt. La oss ta apt-get update-kommandoen som et eksempel.

Alternativet -v brukes til å skrive ut detaljert informasjon:

$ sudo time -v apt-get update

Alternativet -p er nødvendig for å skrive ut data i et POSIX 1003.2-format:

$ sudo time -p apt-get update

Formateringsdatalinjen inneholder vanligvis ressursspesifikatorer og ren tekst. %-tegnet indikerer at tegnet som følger etter det, skal behandles som en ressursspesifikator.

-tegnet brukes til å angi avgrensningstegnet. Det finnes tre tilgjengelige alternativer: t - tabulator, n - ny linje, \ - backslash. Hvis du angir et annet tegn etter , vil terminalen vise et spørsmålstegn (?), noe som indikerer en inndatafeil.

Resten av teksten i formatstrengen kopieres i sin helhet inn i utdatafeltet. I dette tilfellet begynner time alltid å skrive ut data fra en ny linje etter informasjonen om utførelsen av selve kommandoen.

La oss se på de tilgjengelige ressursspesifikatorene:

  • % - bokstavelig %, dvs. at hvis du vil skrive ut et prosenttegn, må du angi %% i kommandoen.
  • C - kommandonavn og argumenter som brukes.
  • D - gjennomsnittlig størrelse på det udelte dataområdet. Den vises i kilobyte.
  • E - sanntid for kommandokjøring i vanlig timeformat. Den vises som [timer:]<minutter:sekunder.
  • N - antall hoved- eller I/O-feil som oppstod under prosessutførelsen.
  • I - antall filsystemtilganger.
  • K - gjennomsnittsverdien for minnet som brukes til kode(tekst), initialiserte data(data) ogstakken (stack). Den vises i kilobyte.
  • M - maksimal størrelse på resident-settet under prosessutførelse i kilobyte.
  • O - antall avslutninger av filsystemet.
  • P - prosentandel av CPU-belastning (sentral prosesseringsenhet).
  • R - antall mindre feil.
  • S - tid i sekunder hvor CPU-enheten ble brukt av systemet på vegne av prosessen i supervisor-modus(kjernemodus).
  • U - tid i sekunder som CPU-enheten ble brukt av prosessen direkte ibrukermodus.
  • W - hvor mange ganger prosessen ble lastet ut av RAM.
  • Z - størrelsen på systemsiden. Denne verdien er en konstant, men varierer fra system til system.
  • c - antall ufrivillige kontekstbytter under prosessutførelse.
  • e - sanntid for kommandokjøring i vanlig timeformat. Den vises i sekunder.
  • k - antall signaler som nådde prosessen.
  • p - gjennomsnittlig størrelse på prosessens udelte stabel, i kilobyte.
  • r - antall mottatte socket-meldinger.
  • s - antall sendte socket-meldinger.
  • t - gjennomsnittlig størrelse på prosessens resident-sett, i kilobyte.
  • w - antall frivillige kontekstbytter under prosessens kjøring
  • x - returkode for kommandoen.

Dette var alle ressursspesifikatorene som ble brukt da vi valgte formateringen for tid. La oss nå gå videre til scenariene for bruk av kommandoen.

LINUX-kommandoens kjøretid

La oss se på tre grunnleggende eksempler som er ganske vanlig å bruke: utdata til terminalen, utdata til en separat fil og utdata med formatering.

Utdata av kjøretiden til terminalen

Som eksempel tar vi sleep-kommandoen, som setter kjøretiden på pause i en spesifisert tid. Det blir et veldig tydelig eksempel, fordi pausetiden vil sammenfalle med kommandoens kjøretid i tid:

$ time sleep 3

Tiden skrives umiddelbart i tre kolonner. La oss gå gjennom hver av dem:

ekte - den totale tiden fra starten av prosessutførelsen til den er fullført.

bruker - tiden prosessen kjørte ibrukermodus.

sys - tiden prosessen var involvert i supervisor-modus(kjernemodus).

Det neste nyttige scenariet er å skrive ut tiden det tar å laste inn et websidehode via curl-verktøyet. La oss ta nettstedet vårt som et eksempel:

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

Vi bør nevne en situasjon der kommandoen setter terminalvinduet i en annen modus, for eksempel når du kjører nano-editoren for å endre filen /home/root-user/script.txt:

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

Etter at redigeringsprogrammet er ferdig, vil du se den totale tiden du har jobbet med filen.

Nå vet du hvordan du kan se kjøretiden for en Linux-kommando.

Filutdata

Informasjonen om resultatene av tidskommandoen kan lagres i en egen fil ved hjelp av alternativet-o. I så fall vil de ikke vises i terminalvinduet. La oss ta et eksempel der vi pakker ut innholdet i ~/data/data.tar.gz-arkivet ved hjelp av tar-verktøyet. Vi lagrer informasjon om kjøretiden i en ny fil ~/data/data_data_data_time.txt. Vi legger også til alternativet-v i kommandoen for å få detaljert informasjon:

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

Filen vil ha følgende innhold.

Hvis du bruker alternativet -o, må du huske at det overskriver den gamle informasjonen i utdatafilen med den nye informasjonen. Dette er aktuelt når du oppretter nye filer, men er ikke egnet for logging. Med det valgfrie alternativet -a erstattes overskrivingen av innholdet med ny informasjon:

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

Utdata med formatering

Det opprinnelige alternativet for formatering av data er ikke egnet i alle tilfeller. Som et eksempel tar vi den tidligere brukte kommandoen for å trekke ut et arkiv, men vi vil ikke lagre dataene i en fil. Når vi utfører den, er vi interessert i:

  • Informasjon om selve kommandoen og de gitte alternativene - dette er spesifikatoren%C.
  • CPU-belastning - spesifiserer%P.
  • Total kjøretid i sekunder - spesifiserer% e.

For komfortabel oppfatning vil hvert element vises på en egen linje ved hjelp av separatoren n. Samtidig vil de alle bli signert på en forståelig måte.

Slik ser den endelige versjonen av kommandoen ut:

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

All tekst unntatt tegnene etter % vises i sin helhet i terminalen. Dette er en praktisk måte å markere