Начини плаћања Abuse

Команда за време у Линуксу

18.03.2022, 01:39

Понекад, када радите са Линукс терминалом, потребно је да знате време извршавања одређених команди, на пример, да бисте пратили проблеме. За овај задатак постоји услужни програм под називом time . Рећи ћемо вам како функционише time Linux и каква је њена синтакса. Затим ћемо прећи на опис доступних опција. И на крају ћемо поменути неколико популарних сценарија употребе.

Синтакса и опције

Услужни програм покреће команду коју је одредио корисник, а затим приказује информације о времену њеног извршавања. Има прилично практичну синтаксу. Прво, потребно је да наведете опције за time , затим команду која треба да се изврши и на крају аргументе за њу:

 $ time [options] command_to_execute [arguments]

Хајде да погледамо листу доступних опција:

  • -o , --output – сачувајте податке у изабрану датотеку уместо на стандардни излаз у терминалу. Ово ће преписати старе податке у датотеци.
  • -a , --append – додаје нове информације у датотеку, уместо да преписује старе. Ова опција је корисна само у комбинацији са -o .
  • -f , --format – бира одређени излазни формат. Детаљи о форматирању су описани у следећем одељку чланка.
  • -p , --profitably – користи излазни формат који је у складу са POSIX 1003.2 стандардом.
  • -v , --verbose – исписује детаљне информације о извршавању програма.
  • -V , --version – приказује верзију услужног програма time .

Ова листа приказује само главне опције. Детаљне информације можете добити помоћу команде:

 $ man time

Опције форматирања излаза

Подразумевано, time може приказивати информације у формату који није удобан за читање,

Пожељно је подесити опције форматирања излаза за њега, о чему ћемо сада разговарати. Постоје три. Као пример за њихово разматрање, узећемо команду apt-get update .

Опција -v се користи за приказ детаљних информација:

 $ sudo time -v apt-get update 

Опција -p је потребна за приказивање података у формату који је у складу са POSIX 1003.2 стандардом:

 $ sudo time -p apt-get update 

Стринг формата обично садржи спецификаторе ресурса и обичан текст. Знак % означава да знак који следи треба третирати као спецификатор ресурса.

Знак одређује знак раздвајања. Постоје три доступне опције: t – табулатор, n – нови ред, \ – обрнута коса црта. Ако наведете било који други знак после , терминал ће приказати знак питања ( ? ), што указује на грешку при уносу.

Остатак текста у линији за форматирање се у потпуности копира у излазно поље. У овом случају, time увек почиње са исписивањем података у новој линији након информација о извршењу саме команде.

Погледајмо доступне спецификаторе ресурса:

  • % – буквални %. То јест, да бисте приказали знак процента, потребно је да наведете %% у команди.
  • С – назив команде и коришћени аргументи.
  • D – просечна величина непартиционисаног подручја података. Приказана је у килобајтима.
  • E – стварно време извршавања команде у уобичајеном формату сати. Приказано као [Hours:]<imutes:seconds .
  • N је број већих грешака или грешака повезаних са I/O операцијама које су се догодиле током извршавања процеса.
  • I – број уноса у датотечном систему.
  • K – просечна вредност коришћене меморије за код ( text ), иницијализоване податке ( data ) и стек ( stack ). Приказано у килобајтима.
  • M – максимална величина резидентног скупа током извршавања процеса у килобајтима.
  • O – број излаза из фајл система.
  • P – проценат оптерећења процесора (CPU).
  • R – број мањих грешака.
  • S – време у секундама током којег је систем користио процесор у име процеса у режиму надзора ( kernel mode ).
  • U – време у секундама током којег је процесор коришћен од стране процеса директно у user mode режиму.
  • W – колико пута је процес истоварен из RAM меморије.
  • Z – величина системске странице. Ова вредност је константна, али варира између система.
  • c – број нехотичних промена контекста током извршавања процеса.
  • e – стварно време извршавања команде у уобичајеном формату сати. Приказано у секундама.
  • k – број сигнала који су стигли до процеса.
  • p – просечна величина недељеног стека процеса, у килобајтима.
  • r – број примљених сокет порука.
  • s – број послатих сокет порука.
  • t – просечна величина скупа резидентних процеса, у килобајтима.
  • w – број добровољних промена контекста током извршавања процеса
  • x – повратни код за команду.

Ово су сви спецификатори ресурса који се користе при избору форматирања за time . Сада пређимо на сценарије коришћења команде.

Време извршавања LINUX команди

Погледајмо три основна примера која се прилично често користе: излаз података на терминал, излаз у посебну датотеку и излаз са форматирањем.

Износ времена извршавања на терминал

Као пример, узећемо команду sleep, која паузира на одређено време. Ово ће бити веома јасан пример, јер ће се време паузе поклопити са временом извршавања команде у time :

 $ time sleep 3

Време се бележи у три колоне одједном. Хајде да прођемо кроз сваку од њих:

real – укупно време од почетка извршавања процеса до његовог завршетка.

user – време током којег је процес радио у user mode режиму.

sys – време током којег је процес радио у режиму надзора ( kernel mode ).

Следећи користан скрипт је приказ времена потребног за учитавање наслова веб странице помоћу услужног програма curl . Узмимо наш сајт као пример:

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

Потребно је поменути ситуацију када извршавање команде пребацује прозор терминала у други режим, на пример, приликом покретања nano едитора ради промене датотеке /home/root-user/script.txt :

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

Након што завршите са уређивањем, видећете укупно време које сте провели радећи на датотеци.

Сада знате како да видите време извршавања Линук команде.

Излазне датотеке

Информације о резултатима команде time могу се сачувати у посебној датотеци помоћу опције -o . У овом случају, неће бити приказане у прозору терминала. Узмимо као пример издвајање садржаја архиве ~/data/data.tar.gz помоћу услужног програма tar . Информације о времену извршавања сачуваћемо у новој датотеци ~/data/data_time.txt . Такође ћемо додати опцију -v команди да бисмо добили детаљне информације:

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

Датотека ће имати следећи садржај.

Када користите опцију -o , имајте на уму да она преписује старе информације у излазној датотеци новим. Ово се може применити при креирању нових датотека, али није погодно за евидентирање. Са додатном опцијом -a, преписивање садржаја се замењује додавањем нових информација:

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

Излаз са форматирањем

Оригинална опција форматирања података није погодна у свим случајевима. Као пример, узећемо претходно коришћену команду за распакивање архиве, али нећемо сачувати податке у датотеку. Приликом њеног извршавања, занима нас:

  • Информације о самој команди и наведеним опцијама су спецификатор %C .
  • Оптерећење процесора - %P спецификатор.
  • Укупно време извршавања у секундама – спецификатор %e .

Ради лакшег разумевања, свака ставка ће бити приказана у посебном реду користећи сепаратор n . Истовремено, све ће бити јасно означене.

Ево како изгледа последња команда:

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

Сав текст осим знакова после % се у потпуности приказује у терминалу. Ово је згодан начин за означавање