Понекад, када радите са Линукс терминалом, потребно је да знате време извршавања одређених команди, на пример, да бисте пратили проблеме. За овај задатак постоји услужни програм под називом 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 . Сада пређимо на сценарије коришћења команде.
Погледајмо три основна примера која се прилично често користе: излаз података на терминал, излаз у посебну датотеку и излаз са форматирањем.
Као пример, узећемо команду 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 
Сав текст осим знакова после % се у потпуности приказује у терминалу. Ово је згодан начин за означавање