Төлем әдістері Abuse

Linux жүйесіндегі уақыт командасы

18.03.2022, 01:39

Кейде Linux терминалымен жұмыс істеу кезінде белгілі бір командалардың орындалу уақытын білу қажет, мысалы, проблемаларды қадағалау. Бұл тапсырма үшін 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 , --versiontime утилитасының нұсқасын көрсету.

Бұл тізім тек негізгі опцияларды көрсетеді. Толық ақпаратты пәрмен арқылы алуға болады:

 $ 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 – файлдық жүйедегі жазбалар саны.
  • K – код ( text ), инициализацияланған деректер ( data ) және стек ( stack ) үшін пайдаланылған жадтың орташа мәні. Килобайтпен көрсетіледі.
  • M – процесті орындау кезінде килобайттағы резидент жиынының максималды өлшемі.
  • O – файлдық жүйеден шығу саны.
  • P – CPU (орталық өңдеу блогы) жүктемесінің пайызы.
  • R – кішігірім қателер саны.
  • S – процессорды бақылаушы режиміндегі процесс атынан жүйе пайдаланған секундтармен берілген уақыт ( kernel mode ).
  • U – процесс тікелей user mode режимінде CPU пайдаланылған секундтармен берілген уақыт.
  • W – процесс жедел жадтан қанша рет түсірілді.
  • Z – жүйе бетінің өлшемі. Бұл мән тұрақты, бірақ ол жүйелер арасында өзгереді.
  • c – процесті орындау кезіндегі еріксіз контекстік қосқыштардың саны.
  • e – әдеттегі сағат пішіміндегі пәрменнің нақты орындалу уақыты. Секундтарда көрсетіледі.
  • k – процеске жеткен сигналдар саны.
  • p – ортақ пайдаланылмаған процесс стекінің орташа өлшемі, килобайтпен.
  • r – қабылданған ұяшық хабарламаларының саны.
  • s – жіберілген ұяшық хабарламаларының саны.
  • t – процесс резиденті жиынының орташа өлшемі, килобайтпен.
  • w – процесті орындау кезіндегі ерікті контекстік қосқыштардың саны
  • x – пәрменнің қайтару коды.

Бұл time үшін пішімдеуді таңдау кезінде пайдаланылатын ресурс спецификаторларының барлығы. Енді пәрменді пайдалану сценарийлеріне көшейік.

LINUX пәрменін орындау уақыты

Жиі қолданылатын үш негізгі мысалды қарастырайық: деректерді терминалға шығару, бөлек файлға шығару және пішімдеу арқылы шығару.

Терминалға шығарудың орындалу уақыты

Мысал ретінде біз белгілі бір уақытқа үзіліс жасайтын ұйқы пәрменін аламыз. Бұл өте айқын мысал болады, себебі үзіліс уақыты команданың орындалу time сәйкес келеді:

 $ time sleep 3

Уақыт бірден үш бағанға жазылады. Олардың әрқайсысына тоқталайық:

real – процестің орындалу басынан оның аяқталуына дейінгі жалпы уақыт.

user – процесс user mode режимінде орындалған уақыт.

sys – процесс супервайзер режимінде орындалатын уақыт ( kernel mode ).

Келесі пайдалы сценарий - curl утилитасының көмегімен веб-бет тақырыбын жүктеуге кететін уақытты шығару. Мысал ретінде біздің сайтты алайық:

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

Команданы орындау терминал терезесін басқа режимге ауыстырған кездегі жағдайды атап өту керек, мысалы, /home/root-user/script.txt файлын өзгерту үшін наноредакторды іске қосқан кезде:

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

Өңдеуді аяқтағаннан кейін файлмен жұмыс істеуге жұмсалған жалпы уақытты көресіз.

Енді сіз Linux пәрменінің орындалу уақытын қалай көруге болатынын білесіз.

Файлдарды шығару

Уақыт пәрменінің нәтижелері туралы ақпаратты -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 спецификаторы болып табылады.
  • CPU жүктемесі - %P спецификаторы.
  • Секундтағы жалпы орындалу уақыты – %e спецификаторы.

Ыңғайлы қабылдау үшін әрбір элемент n бөлгішті пайдаланып бөлек жолда көрсетіледі. Бұл ретте олардың барлығына нақты түрде қол қойылады.

Міне, соңғы пәрмен қалай көрінеді:

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

% таңбаларынан басқа барлық мәтін терминалда толығымен көрсетіледі. Бұл белгілеудің ыңғайлы жолы