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

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

Мануал

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

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

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

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

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

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

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

$ /usr/bin/time -p ls

или

$ time ls

Пример вывода

dir1 dir2 file1 file2 mcelog

real 0m0.007s
user 0m0.001s
sys 0m0.004s
$ time ls -a
. .bash_logout dir1 file2 mcelog .sudo_as_admin_successful
.. .bashrc dir2 .gnupg .profile .wget-hsts
.bash_history .cache file1 .local .stack

real 0m0.008s
user 0m0.001s
sys 0m0.005s

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

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

Здесь:

  • real – возвращает общее время, затраченное командой / программой,
  • user – указывает время, затраченное программой в пользовательском режиме,
  • sys – указывает время, затраченное программой в режиме ядра.

time и /usr/bin/time

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

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

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

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

$ type -a time
time is a shell keyword
time is /usr/bin/time

Как видите time  – две штуки

  • Ключевое слово, встроенное в оболочку BASH
  • Исполняемый файл – /usr/bin/time

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

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

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

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

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

Единственный вариант, который вы можете использовать в ключе «time», – это -p.

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

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

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

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

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

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

/usr/bin/time [options] command [arguments...]

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

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

  • -f, -format – Используйте этот параметр, чтобы указать формат вывода по вашему желанию.
  • -p, -portability – Использовать переносимый формат вывода.
  • -o file, -output = FILE – Записывает вывод в FILE вместо отображения в качестве стандартного вывода.
  • -a, -append – Добавить файл в файл вместо перезаписывания.
  • -v, -verbose – Этот параметр отображает подробное описание вывода утилиты «время».
  • -Quiet – этот параметр запрещает утилиту времени «время» сообщать о статусе программы.
  • При использовании программы «GNU time» без каких-либо параметров вы увидите вывод, как показано ниже.
$ /usr/bin/time wc /etc/hosts
9 28 273 /etc/hosts
0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k
0inputs+0outputs (0major+73minor)pagefaults 0swaps

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

$ time wc /etc/hosts
9 28 273 /etc/hosts

real 0m0.006s
user 0m0.001s
sys 0m0.004s

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

$ /usr/bin/time -o file.txt ls
dir1 dir2 file1 file2 file.txt mcelog

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

$ cat file.txt 
0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2512maxresident)k
0inputs+0outputs (0major+106minor)pagefaults 0swaps

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

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

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

$ /usr/bin/time -a file.txt ls

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

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

$ /usr/bin/time -f "\t%E real,\t%U user,\t%S sys" ls
dir1 dir2 file1 file2 mcelog
0:00.00 real, 0.00 user, 0.00 sys

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

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

$ man time

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий