Отслеживание времени выполнения команд с помощью утилиты time

Утилита time измеряет время выполнения отдельной программы и затраченное на ее выполнение время ЦП.

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

Пользовательское время - это время выполнения самой программы и всех вызовов библиотечных функций. Системное время - это время обработки вызванных программой (напрямую или косвенно) системных процедур и функций.

В сумме пользовательское и системное время дают общее время процессора, затраченное на выполнение программы. Сюда не входит обработка процессором компонентов ядра, которые могут быть запущены в ходе выполнения программы, но в настоящее время не запущены в данной нити. Например, захват страниц физической памяти для замещения страниц, полученных из списка свободных страниц при запуске программы, не учитывается при подсчете времени процессора, затраченного на выполнение программы.

$ man 1 time

Если вы используете командной оболочки Основы BASH скрипты, циклы, горячие клавиши, то вы должны помнить, что в bash существует одноименная функция time. И значит, в случае оболочки bash необходимо использовать явный путь для запуска /usr/bin/time .

Найти путь к истинной команду time

$ which time
/usr/bin/time

Для вывода реального физического времени, которое прошло с момента запуска команды до момента её выполнения используйте утилиты time с отформатированным выводом

# /usr/bin/time -f %E wc /var/log/syslog 1>/dev/null
0:00.02

-f %E — задает формат вывода для time (E = реальное время, % — метасимвол).

Вывод time утилиты для bash:

# time cat /var/log/syslog
real    0m0.158s
user    0m0.000s
sys     0m0.015s

где,

  • real - реальное время выполнение между вызовом и завершением утилиты cat
  • user - время CPU, которое занял пользователь
  • sys - время CPU занятое системой

ключ -p заставляет использовать традиционный формат времени (с цифрами в секундах)

# time -p cat /var/log/syslog
real 0.04
user 0.01
sys 0.00

Записывать вывод в файл time.log:

$ /usr/bin/time -o time.log ping wow2.top
...
 
# cat time.log
0.00user 0.00system 0:05.56elapsed 0%CPU (0avgtext+0avgdata 2804maxresident)k
568inputs+0outputs (3major+137minor)pagefaults 0swaps
PQ VPS сервера в 28+ странах.