Linux время выполнения команды

Обновлено: 05.07.2024

В некоторых ситуациях нам нужно точно знать, сколько времени потребовалось для выполнения конкретной команды или сценария. Конечно, вы можете самостоятельно засечь время или использовать секундомер, чтобы узнать продолжительность обработки команды. К счастью, существует команда time, которая избавит вас от всех этих проблем.

Командная строка предлагает множество одноцелевых утилит, благодаря которым нет необходимости писать дополнительный код. Команда time – одна из таких команд. Важно помнить, что команда time никак не связана с командой date, которая выводит дату и время системы. Утилита time измеряет время выполнения программы или сценария и сообщает вам полученное значение.

В этом мануале вы узнаете, как использовать команду time и как читать ее выходные данные.

Примечание: Если не указано иное, примеры в этом руководстве выполняются в оболочке Bash в Linux.

1: Время выполнения команды

Чтобы рассчитать продолжительность выполнения команды, укажите в ней time в качестве префикса.

Метод выполнения time зависит от вашей операционной системы. В некоторых оболочках (bash и zsh, например) утилита time является встроенной командой; но также есть и отдельная команда GNU time – и ее аргументы отличаются от тех, что использует встроенная time.

Используйте следующую команду, чтобы посмотреть, как работает time в вашей системе:

Вы получите такой результат:

time is a shell keyword
time is /usr/bin/time

В этом случае есть и встроенная команда оболочки time, и версия time , установленная в каталог /usr/bin/time.

Если вы хотите использовать GNU-версию time, вы можете поставить перед ней обратный слеш:

Если вы этого не сделаете, оболочка будет использовать встроенную версию.

Примечание: Оболочка fish не имеет собственной реализации time. Если вы используете fish, вам нужно убедиться, что у вас установлена GNU команда time.

Оба метода служат одной и той же цели, хотя версия GNU имеет более продвинутые параметры форматирования.

Давайте исследуем время выполнения команды tree в корне вашей файловой системы. Эта команда отобразит визуальное дерево всех ваших файлов и каталогов.

Команда tree не всегда установлена по умолчанию, но в системах Ubuntu и Debian вы можете установить ее с помощью apt:

sudo apt install tree

В macOS ее можно установить с помощью Homebrew:

brew install tree

Теперь, когда команда tree установлена, используйте ее, чтобы просмотреть все файлы в системе, и добавьте к ней префикс time, чтобы узнать, сколько времени это займет:

Вы увидите, как прокручивается информация о файлах. В конце концов команда покажет вам потраченное время:

Обратите внимание, что выполненная вами команда tree / повторяется командой time. Вывод отображает несколько фрагментов информации, но пока мы сосредоточимся на значении total:

tree / 12.24s user 10.37s system 66% cpu 33.827 total

Именно столько времени потребовалось для выполнения команды в секундах.

Команда time также работает, если вы отменили выполнение команды с помощью Ctrl+C. Если вы снова запустите time tree / и быстро нажмете Ctrl+C, вывод команды tree остановится, а на экране будут представлены результаты time за то время, что успела поработать команда до того, как вы ее остановили.

2: Использование ресурсов

Вывод time включает три значения в дополнение к общей продолжительности выполнения команды, total.

tree / 12.24s user 10.37s system 66% cpu 33.827 total

Первое значение – user. Это общее количество времени (в CPU-секундах), которое команда провела в пользовательском режиме.

Следующее значение, system – это количество времени (тоже в CPU-секундах), которое команда провела в режиме системы или ядра.

Наконец, cpu – это процент использования ЦП, выделенного команде.

В свою очередь, в режиме ядра исполняемый код имеет неограниченный доступ к системному оборудованию. Этот режим в значительной степени зарезервирован для наиболее надежных функций операционной системы. Когда какой-либо код сталкивается с ошибкой в режиме ядра, из-за полного доступа эти ошибки приводят к сильным сбоям и, как правило, приводят к сбою системы в целом.

Заключение

В этом мануале вы узнали, как при помощи команды time узнать, сколько времени потребовалось для выполнения команд и сценариев и на что именно потрачено это время. Команда time, встроенная в вашу оболочку, дает вам быстрый доступ к расчету продолжительности выполнения запущенных команд без каких-либо дополнительных средств.

Вероятно, вы знаете время начала команды / процесса и как долго процесс выполняется в Unix-подобных системах.

Но когда вы его закончили и / или какое общее время, затраченное на выполнение команды / процесса?

В Unix-подобных системах есть утилита с именем «GNU time», специально предназначенная для этой цели.

Используя утилиту Time, мы можем легко измерить общее время выполнения команды или программы в операционных системах Linux.

Хорошо, что команда «Time» поставляется в большинстве дистрибутивов Linux, поэтому вам не нужно беспокоиться об установке.

Найти время выполнения команды или процесса в Linux

Чтобы измерить время выполнения команды / программы, просто запустите.

Вышеуказанные команды отображают общее время выполнения команды «ls».

Замените «ls» любой командой / процессом по вашему выбору, чтобы найти общее время выполнения.

time и /usr/bin/time

Как вы могли заметить, в приведенных выше примерах мы использовали две команды «time» и «/usr/bin/time».

Итак, вы можете задаться вопросом, в чем разница между ними.

Сначала давайте посмотрим, что на самом деле «timeя» использует команду «type».

Для тех, кто не знает, команда Type используется для получения информации о команде Linux.

Поскольку ключевые слова оболочки имеют приоритет над исполняемыми файлами, когда вы просто запускаете runmimommand без полного пути, вы запускаете встроенную команду оболочки.

Но, когда вы запускаете /usr/bin/time, вы запускаете реальную программу времени GNU time.

Итак, чтобы получить доступ к реальной команде, вам может потребоваться указать ее явный путь.

Встроенное ключевое слово оболочки «time» доступно в большинстве оболочек, таких как BASH, ZSH, CSH, KSH, TCSH и т. д.

Ключевое слово оболочки «time» имеет меньше опций, чем исполняемые файлы.

Теперь вы знаете, как найти общее время выполнения данной команды / процесса, используя команду «time».

Хотите узнать немного больше об утилите «GNU time»? Читайте дальше!

Краткое введение в программу «GNU time»

Программа GNU time запускает команду / программу с заданными аргументами и суммирует использование системных ресурсов в качестве стандартного вывода после завершения команды.

В отличие от ключевого слова time, программа GNU time не просто отображает время, используемое командой / процессом, но и другие ресурсы, такие как память, вызовы ввода-вывода и IPC.

Типичным синтаксисом команды Time является:

options в приведенном выше синтаксисе ссылаются на набор флагов, которые могут использоваться командой time для выполнения определенной функциональности.

Список доступных опций приведен ниже^

Если вы запустите ту же команду с встроенным ключевым словом «time», результат будет немного другим:

В некоторых случаях вы можете записать вывод использования системного ресурса в файл, а не отображать его в терминале. Для этого используйте флаг -o, как показано ниже.

Как вы можете видеть на выходе, утилита Time не отображает результат. Потому что мы записываем вывод в файл с именем file.txt. Давайте посмотрим на этот файл:

Когда вы используете флаг -o, если нет файла с именем «file.txt», он будет создавать и записывать вывод в него.

Если файл.txt уже присутствует, он перезапишет его содержимое.

Вы также можете добавить вывод в файл, а не переписывать его, используя флаг -a.

Флаг -f позволяет пользователям управлять форматом вывода по своему усмотрению.

Скажем, например, следующая команда отображает вывод команды «ls» и показывает только пользователя, систему и общее время.

Помните, что встроенная команда «time» не поддерживает все функции программы GNU time.

Для получения дополнительной информации о утилите времени GNU см. Справочные страницы.

Измерить время выполнения команды в Linux не просто, а очень просто. Но это только на первый взгляд. Давайте посмотрим на команду time более внимательно.

Команда time

Вызов консольной команды time

Синтаксис данной команды очень простой:

С помощью ключа -p можно заставить команду выводить время выполнения в сжатом Posix формате:

Другой time

Теперь разберемся, что же за команду мы выполняем:

А теперь попробуем сделать так:

А это уже внешняя команда, расположенная по пути: /usr/bin.

Попробуем вызвать ее:

Параметры вызова внешней команды time

Перенаправление вывода статистики в файл, вместо вывода в стандартный поток ошибок. По умолчанию, существующий файл будет полностью перезаписан.

Применяется для сбора статистики из программ с пользовательским интерфейсом или выводящих информацию в поток ошибок.

-a, --append Дополняет существующий файл новой информацией. Применяется совместно с опциями '-o' или '--output' . -f FORMAT, --format FORMAT

Используется шаблон FORMAT для вывода статистики.

Формат вывода по умолчанию:

%Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k
%Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps

Описание используемых шаблонов приведено в конце статьи.

--help Вывод краткой помощи и завершение команды. -p, --portability

Выводит информацию по стандарту POSIX 1003.2:
real %e
user %U
sys %S

Внешний time по умолчанию

Чтобы явно указать, какую из команд мы хотим вызвать, можно воспользоваться следующим способом:

Для того, чтобы по умолчанию запускалась внешняя команда time достаточно выполнить:

Это установит внешнюю команду time по умолчанию для текущей сессии.

Чтобы применить эти изменения для всех последующих сессий, добавьте команду alias в файл

/.bashrc (изменения для текущего пользователя) или /etc/bash.bashrc (изменения затронут всех пользователей системы).

Измерение времени выполнения команд в скриптах

Довольно часто необходимо замерить время выполнения какого-либо участка кода в скрипте bash.

Favorite

Добавить в избранное (1 оценок, среднее: 5,00 из 5)

Команда time в Linux

К оманда time используется, чтобы определить, сколько time занимает выполнение данной команды. Это полезно для тестирования производительности ваших скриптов и команд.

Например, если у вас есть два разных скрипта, выполняющих одну и ту же работу, и вы хотите знать, какой из них работает лучше, вы можете использовать команду time в Linux для определения продолжительности выполнения каждого скрипта.

Версии команды time

И Bash, и Zsh, наиболее широко используемые оболочки Linux, имеют свои собственные встроенные версии команды time, которые имеют приоритет над командой Gnu time.

Вы можете использовать команду type, чтобы определить, является ли время двоичным или встроенным ключевым словом.

Чтобы использовать команду time в Gnu, вам нужно указать полный путь к двоичному файлу time, обычно /usr/bin/time используйте команду env или начальную обратную косую черту \time которая предотвращает использование обеих и встроенных функций.

Время Gnu позволяет вам форматировать выходные данные и предоставляет другую полезную информацию, такую ​​как память ввода-вывода и IPC-вызовов.

Использование команды Time в Linux

В следующем примере мы собираемся измерить время, необходимое для загрузки ядра Linux, с помощью инструмента wget:

То, что будет напечатано как вывод, зависит от версии команды time, которую вы используете:

Заключение

К настоящему time вы должны хорошо понимать, как использовать команду time.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: