Команда time в Linux
В некоторых случаях при работе с терминалом Linux нужно знать время выполнения тех или иных команд, например, для отслеживания проблем. Для этой задачи существует утилита time. Конкретно про нее и пойдет речь в нашей статье.
Мы расскажем, как работает команда time Linux и какой у неё синтаксис. Затем перейдем к описанию доступных опций. А в конце упомянем несколько популярных сценариев использования.
Синтаксис и опции time
Утилита запускает заданную пользователем команду и после этого выводит информацию о времени ее выполнения. У нее достаточно удобный синтаксис. Сначала нужно указать опции для time, затем – выполняемую команду, а в конце – аргументы к ней:
$ time опции команда_для_выполнения аргументы
Рассмотрим список доступных опций:
- -o, —output – сохранять данные в выбранный файл вместо стандартного вывода в терминале. При этом старые данные в файле будут перезаписаны.
- -a, —append – добавлять в файл новую информацию, а не перезаписывает старую. Опция полезна только в сочетании с -o.
- -f, —format – выбрать определенный формат вывода. Подробности о форматировании описаны в следующем разделе статьи.
- -p, —profitably – использовать формат вывода данных для соответствия со стандартом POSIX 1003.2.
- -v, —verbose – выводить подробную информацию о выполнении программы.
- -V, —version – вывести версию утилиты time.
В этом списке представлены только основные опции. Получить подробную информацию можно командой:
Опции форматирования вывода
По умолчанию time может выводить информацию в не комфортном для чтения виде.
По этой причине для нее желательно задавать опции форматирования вывода, о которых и пойдет сейчас речь. Всего их три штуки. В качестве примера для их рассмотрения возьмем команду apt-get update.
Опция -v используется для вывода подробной информации:
sudo time -v apt-get update
Опция -p нужна для вывода данных в формате, соответствующем стандарту POSIX 1003.2:
sudo time -p apt-get update
А с помощью опции -f или —format детально задается форматирование вывода. Этот момент стоит рассмотреть более детально.
Строка с данными о форматировании, как правило, включает в себя спецификаторы ресурсов и обычный текст. Знак % обозначает, что следующий после него символ следует воспринимать как спецификатор ресурсов.
С помощью знака \ задается разделительный символ. Есть три доступных варианта: \t – табуляция, \n – новая строка, \\ – обратная косая черта. Если после \ указать любой другой символ, то в терминале появится вопросительный знак (?), который говорит об ошибке ввода.
Остальной текст в строке формата полностью копируется в поле вывода. При этом time всегда начинает вывод данных с новой строки после информации о выполнении самой команды.
Рассмотрим доступные спецификаторы ресурсов:
- % – литерал %. То есть для вывода знака процента нужно в команде указать %%.
- С – имя команды и использованные аргументы.
- D – средний размер неразделенной области данных. Отображается в килобайтах.
- E – реальное время выполнения команды в привычном часовом формате. Выводится в виде [часы:]минуты:секунды.
- N – количество мажорных ошибок или ошибок, связанных с вводом-выводом, возникших при выполнении процесса.
- I – количество входов в файловую систему.
- K – среднее значение задействованной памяти для кода (text), инициализированных данных (data) и стека (stack). Отображается в килобайтах.
- M – максимальный размер резидентного множества во время выполнения процесса в килобайтах.
- O – количество выходов из файловой системы.
- P – процент загруженности CPU (центрального процессора).
- R – количество минорных ошибок.
- S – время в секундах, в течении которого CPU использовался системой от имени процесса в режиме супервизора (kernel mode).
- U – время в секундах, в течении которого CPU использовался процессом напрямую в пользовательском режиме (user mode).
- W – сколько раз процесс был выгружен из оперативной памяти.
- X – тут не понял.
- Z – размер системной страницы. Это значение – константа, но она различается между системами.
- c – количество невольных переключений контекста при выполнении процесса.
- e – реальное время выполнения команды в привычном часовом формате. Выводится в секундах.
- k – количество сигналов, дошедших до процесса.
- p – средний размер неразделенного стека процесса, в килобайтах.
- r – количество полученных сокетных сообщений.
- s – количество отправленных сокетных сообщений.
- t – средний размер резидентного множества процесса, в килобайтах.
- w – количество добровольных переключений контекста при выполнении процесса.
- x – код возврата для команды.
Это были все спецификаторы ресурсов, использующиеся при выборе форматирования для time. Теперь перейдем к сценариям использования команды.
Как узнать время выполнения команды Linux
Мы рассмотрим три основных примера, которые довольно часто используются: вывод данных в терминал, вывод в отдельный файл и вывод с форматированием.
1. Вывод времени выполнения в терминал
В качестве примера мы возьмем команду sleep, которая делает паузу на указанное время. Это будет очень наглядный пример, ведь время паузы будет совпадать с временем выполнения команды в time:
Еще хотелось бы упомянуть ситуацию, когда выполнение команды переводит окно терминала в другой режим, например, при запуске редактора 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
3. Вывод с форматированием
Исходный вариант форматирования данных подходит далеко не во всех случаях. В качестве примера мы возьмем ранее использованную команду для извлечения архива, но не станем сохранять данные в файл. При ее выполнении нам интересно:
- Информация о самой команде и заданных опциях – это спецификатор %C.
- Загруженность CPU – спецификатор %P.
- Общее время выполнения в секундах – спецификатор %e.
Для комфортного восприятия каждый пункт будет выводиться в отдельной строке с помощью разделителя \n. При этом они все будут подписаны понятным образом.
Вот как выглядит итоговый вариант команды:
sudo time -f «Информация о команде:\n%C\nЗагруженность CPU: %P\nВремя выполнения: %e сек» tar -xvf ~/data/data.tar.gz -C ~/data
Обратите внимание, что весь текст, кроме символов после % и \, полностью отображается в терминале. Это удобный способ разметки
Выводы
В рамках данной статьи вы узнали как работает команда time Linux, которая следит за выполнением заданной команды и выдает подробную информацию о времени выполнения и т. д. Основная сложность при ее использовании – понимание опций для форматирования вывода. Но если в них разобраться, то больше никаких проблем не возникнет. Для вашего удобства мы упомянули конкретные примеры использования.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
How to use time command in Linux
Time is the essential parameter to evaluate the efficiency or performance of any task. Such a good processor is judged by good processing speed which is evaluated on the basis of time. Similarly, in Linux, the “time” command is used to evaluate the processing time taken by different commands in their execution. There are different ways to do the same task, for example, we can edit the text files using the vim editor as well as the nano editor, with the help of the time command we can evaluate which editor takes less execution time, then we can use that editor for text editing purposes for better performance.
What is the use of time command in Linux
In Linux, the time command is used to determine the execution time taken by the processor to execute the specified command.
The general syntax of using the time command:
The explanation to the above syntax is:
- Use the time clause to determine the time taken by the command
- Choose any options along with the time clause
- Type the command whose executed time you want to find out
For example, we execute a command which will take 4 seconds execution time and determine its time using the “time” command:
The output displayed that the command was executed in 4.002 seconds, there are three types of values in the output real, user, and sys, the explanation to them is as:
- Real: This is the actual time taken by the processor of the computer to execute the command from pressing the button to complete the command.
- User: CPU time that is taken by the user mode.
- SYS: This is the time taken by the system or the Kernel to execute the command.
We can also add an option by adding a flag of “-p”, that will display the time in portable POSIX format, to understand it, again run the above command using the “-p” flag:
We will update the repository of the Linux and will monitor the time of update by using the time command:
It will take some time to update the repository:
It takes 36.289 seconds to update the packages repository. To understand more about the time command, we can run the help using the command:
If we want that the output of the time command is not displayed on the screen, instead of that it should be saved in the text file we can run the following command:
Note: We will use the “/usr/bin/time” instead of the “time” command because the shell built-in time command does not support the “-o” option.
To view the output of the file “output.txt”, use the command:
To have the detailed summary of the executed time, use the option “-v” with the “/usr/bin/time” command:
The above figure displays the detailed summary of the executed time for the command. In the last, Linux provides the manuals of all the built-in commands, to view the manual of the time command to seek some information, use:
Conclusion
The time command is used in Linux for testing purposes; it is used to test the performance of newly created applications. In this write-up, we have discussed the use of the time command in Linux that is used to monitor the execution time of the commands in Linux. We have discussed two syntaxes, the built-in “time” command and “/usr/bin/time” command with its different options.
About the author
Hammad Zahid
I’m an Engineering graduate and my passion for IT has brought me to Linux. Now here I’m learning and sharing my knowledge with the world.