Поиск по сайту:

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

Проверьте время выполнения команды или процесса в 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» на любую команду/процесс по вашему выбору, чтобы узнать общее время выполнения.

Здесь,

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

Мы также можем ограничить выполнение команды только в течение определенного времени. Для получения более подробной информации обратитесь к следующему руководству.

  • Как запустить команду в определенное время в Linux

время против /usr/bin/time

Как вы могли заметить, в приведенных выше примерах мы использовали две команды 'time' и '/usr/bin/time'. Итак, вам может быть интересно, в чем разница между ними.

Во-первых, давайте посмотрим, что на самом деле «time» использует команда «type». Для тех, кто не знает, команда Type используется для получения информации о команде Linux. Более подробную информацию можно найти в этом руководстве.

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

Как вы видите в приведенном выше выводе, время — это и то, и другое:

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

Поскольку ключевые слова оболочки имеют приоритет над исполняемыми файлами, когда вы просто запускаете команду time без полного пути, вы запускаете встроенную команду оболочки. Но когда вы запускаете /usr/bin/time, вы запускаете настоящую программу GNU time. Таким образом, чтобы получить доступ к реальной команде, вам может потребоваться указать ее явный путь. Прозрачный? Хороший!

Встроенное ключевое слово оболочки «time» доступно в большинстве оболочек, таких как BASH, ZSH, CSH, KSH, TCSH и т. д. Ключевое слово оболочки «time» имеет меньше вариантов, чем исполняемые файлы. Единственный вариант, который вы можете использовать в ключевом слове «время», — это -p.

Теперь вы знаете, как найти общее время выполнения данной команды/процесса с помощью команды time. Хотите узнать больше об утилите GNU time? Читай дальше!

Краткое описание программы «GNU time»

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

Типичный синтаксис команды Time:

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

«Параметры» в приведенном выше синтаксисе относятся к набору флагов, которые можно использовать с командой time для выполнения определенной функции. Список доступных опций приведен ниже.

  • -f, --format — используйте эту опцию, чтобы указать желаемый формат вывода.
  • -p, --portability — использовать переносимый формат вывода.
  • -o file, --output=FILE — записывает выходные данные в FILE вместо отображения в качестве стандартного вывода.
  • -a, --append — добавить вывод в ФАЙЛ вместо его перезаписи.
  • -v, --verbose — этот параметр отображает подробное описание выходных данных утилиты time.
  • --quiet — этот параметр не позволяет утилите time сообщать о состоянии программы.

При использовании программы «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 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», он создаст и запишет в него выходные данные. Если file.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

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

Более подробную информацию об утилите времени GNU можно найти на страницах руководства.

man time

Чтобы узнать больше о встроенном ключевом слове «Time» в Bash, запустите:

help time

Ресурсы:

  • Никскрафт
  • AskUbuntu

Статьи по данной тематике