Maksājuma metodes Abuse

Laika komanda Linux operētājsistēmā

18.03.2022, 01:39

Dažreiz, strādājot ar Linux termināli, jums ir jāzina noteiktu komandu izpildes laiks, piemēram, lai izsekotu problēmas. Šim nolūkam ir lietderība, ko sauc par time. Mēs jums pastāstīsim, kā darbojas Linux laika komanda un kāda ir tās sintakse. Pēc tam pāriesim pie pieejamo opciju apraksta. Un beigās minēsim dažus populārus lietošanas scenārijus.

Sintakse un opcijas

Lietderība izpilda lietotāja definētu komandu un pēc tam parāda informāciju par tās izpildes laiku. Tās sintakse ir diezgan ērta. Vispirms jānorāda laika opcijas, tad izpildāmā komanda un visbeidzot tās argumenti:

$ time [options] command_to_execute [arguments]

Apskatīsim pieejamo opciju sarakstu:

  • -o, --output - saglabā datus izvēlētajā failā, nevis termināļa standarta izvades failā. Šajā gadījumā vecie dati failā tiks pārrakstīti.
  • -a, --append - pievieno failam jaunu informāciju, nevis pārraksta veco. Šī opcija ir noderīga tikai kombinācijā ar -o.
  • -f, --format - izvēlas konkrētu izejas formātu. Sīkāka informācija par formatēšanu ir aprakstīta šā raksta nākamajā sadaļā.
  • -p, --profitably - izmantot datu izvades formātu, kas atbilst POSIX 1003.2 standartam.
  • -v, --verbose - izvadīt detalizētu informāciju par programmas izpildi.
  • -V, --versija - izvadiet laika utilīta versiju.

Šajā sarakstā ir tikai galvenās opcijas. Sīkāku informāciju var iegūt ar komandu:

$ man time

Izvades formatēšanas opcijas

Pēc noklusējuma time var izvadīt informāciju formā, kas nav ērta lasīšanai,

Ir vēlams iestatīt izvades formatēšanas opcijas, kas tiks aplūkotas tagad. Kopumā ir trīs no tām. Kā piemēru ņemsim apt-get update komandu.

Lai izvadītu detalizētu informāciju, tiek izmantota opcija -v:

$ sudo time -v apt-get update

opcija -p ir nepieciešama, lai datus izvadītu POSIX 1003.2 standartam atbilstošā formātā:

$ sudo time -p apt-get update

Formātdatu rindā parasti ir resursu specifikatori un vienkāršs teksts. Pazīme % norāda, ka rakstzīme, kas tai seko, ir uzskatāma par resursa specifikatoru.

Zīmi izmanto, lai norādītu norobežošanas rakstzīmi. Ir pieejamas trīs iespējas: t - tabulators, n - jauna rindiņa, \ - atpakaļslīpsvītra. Ja pēc norādīsiet jebkuru citu rakstzīmi, terminālī parādīsies jautājuma zīme (?), kas norāda uz ievades kļūdu.

Pārējais formāta virknes teksts tiek pilnībā nokopēts izejas laukā. Šajā gadījumā time vienmēr sāk izvadīt datus no jaunas rindas pēc informācijas par pašas komandas izpildi.

Apskatīsim pieejamos resursu specifikatorus:

  • t. i., lai izvadītu procenta zīmi, komandā jānorāda%%.
  • C - komandas nosaukums un izmantotie argumenti.
  • D - vidējais nesadalītās datu jomas lielums. Tas tiek parādīts kilobaitos.
  • E - komandas izpildes reālais laiks parastajā stundas formātā. Tas tiek attēlots kā [stundas:]< minūtes:sekundes.
  • N - galveno vai I/O kļūdu skaits, kas radušās procesa izpildes laikā.
  • I - failu sistēmas piekļuves gadījumu skaits.
  • K - vidējā kodam(text), inicializētiem datiem(data) unkaudzītei (stack) izmantotās atmiņas vērtība. To parāda kilobaitos.
  • M - maksimālais rezidentu kopas lielums procesa izpildes laikā kilobaitos.
  • O - failu sistēmas izeju skaits.
  • P - centrālā procesora (CPU) slodzes procentuālā daļa.
  • R - nelielu kļūdu skaits.
  • S - laiks sekundēs, kura laikā sistēma procesa vārdā izmantoja centrālo procesoru pārrauga režīmā(kodola režīmā).
  • U - laiks sekundēs, kura laikā procesors izmantoja procesora darbību tiešilietotāja režīmā.
  • W - cik reizes process tika izkrauts no RAM.
  • Z - sistēmas lapas lielums. Šī vērtība ir konstanta, taču dažādās sistēmās tā ir atšķirīga.
  • c - procesa izpildes laikā veikto piespiedu konteksta pārslēgumu skaits.
  • e - komandu izpildes reālais laiks parastajā stundas formātā. Tas tiek parādīts sekundēs.
  • k - procesu sasniegušo signālu skaits.
  • p - procesa nedalītā kaudzes vidējais lielums kilobaitos.
  • r - saņemto ligzdas ziņojumu skaits.
  • s - nosūtīto ligzdas ziņojumu skaits.
  • t - procesa rezidentu kopas vidējais lielums kilobaitos.
  • w - brīvprātīgo konteksta pārslēgumu skaits procesa izpildes laikā.
  • x - komandas atgriešanās kods.

Šie bija visi resursu specifikatori, kas tika izmantoti, izvēloties laika formatējumu. Tagad pāriesim pie komandas izmantošanas scenārijiem.

LINUX komandas izpildes laiks

Aplūkosim trīs pamata piemērus, kas tiek diezgan bieži izmantoti: izvadīšana terminālī, izvadīšana atsevišķā failā un izvadīšana ar formatēšanu.

Izvades laika izvadīšana terminālī

Kā piemēru ņemsim miega komandu, kas uz noteiktu laiku aptur darbību. Tas būs ļoti uzskatāms piemērs, jo pauzes laiks sakritīs ar komandas izpildes laiku laikā:

$ time sleep 3

Laiks tiek uzrakstīts uzreiz trīs slejās. Izskatīsim katru no tām:

reāls - kopējais laiks no procesa izpildes sākuma līdz tā pabeigšanai.

user - laiks, kurā process darbojāslietotāja režīmā.

sys - laiks, kura laikā process darbojās uzrauga režīmā(kodola režīmā).

Nākamais noderīgais scenārijs ir izvadīt laiku, kas nepieciešams, lai ielādētu tīmekļa lapas galveni, izmantojot curl utilītu. Kā piemēru ņemsim mūsu tīmekļa vietni:

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

Jāpiemin situācija, kad, izpildot komandu, termināļa logs nonāk citā režīmā, piemēram, kad palaižat redaktoru nano, lai modificētu failu /home/root-user/script.txt:

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

Pēc redaktora pabeigšanas redzēsiet kopējo laiku, cik ilgi esat strādājis ar šo failu.

Tagad jūs zināt, kā redzēt Linux komandas izpildes laiku.

Faila izvade

Informāciju par laika komandas rezultātiem var saglabāt atsevišķā failā, izmantojot opciju-o. Šādā gadījumā tie netiks parādīti termināļa logā. Ņemsim par piemēru ~/data/data.tar.gz arhīva satura izvilkšanu, izmantojot tar utilītu. Saglabāsim informāciju par izpildes laiku jaunā failā ~/data/data_data_data_time.txt. Komandai pievienosim arī opciju v, lai iegūtu detalizētu informāciju:

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

Failam būs šāds saturs.

Ja izmantojat opciju -o, atcerieties, ka tā pārraksta veco informāciju izejas failā ar jauno informāciju. Tas ir piemērojams, veidojot jaunus failus, bet nav piemērots reģistrēšanai. Izmantojot izvēles opciju -a, satura pārrakstīšana tiek aizstāta ar jaunas informācijas pievienošanu:

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

izeja ar formatēšanu

Sākotnējā datu formatēšanas opcija nav piemērota visos gadījumos. Kā piemēru ņemsim iepriekš izmantoto komandu arhīva izvilkšanai, bet datus nesaglabāsim failā. Izpildot to, mūs interesē:

  • Informācija par pašu komandu un dotajām opcijām - šis specifikators%C.
  • Procesora slodze - specifikators%P.
  • Kopējais izpildes laiks sekundēs - specifikators%e.

Ērtākai uztveršanai katrs elements tiks parādīts atsevišķā rindā, izmantojot atdalītāju n. Tajā pašā laikā tie visi tiks parakstīti saprotamā veidā.

Lūk, kā izskatās galīgais komandas variants:

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

Viss teksts, izņemot rakstzīmes pēc %, ir pilnībā parādīts terminālī. Tas ir ērts veids, kā iezīmēt