Как использовать команду time в Linux

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

В этом руководстве мы рассмотрим, как использовать команду time на различных примерах, а также узнаем, как интерпретировать ее вывод. Мы также рассмотрим, как пользоваться командой GNU time, которая отличается от утилиты time, встроенной в оболочки Bash и zsh.

В этой статье мы будем раасматривать две разные версии time, команду time используемую по умолчанию в оболочке Bash и GNU time. Обратите внимание, что есть и другие версии time, используемые в других оболочках, например, в zsh. Для целей этого руководства мы используем стандартную оболочку Bash.

Чтобы вызвать утилиту time Bash, необходимо просто ввести команду time в командной строке. Чтобы использовать GNU time, указывается полный путь /usr/bin/time.

$ time (команда)

или

$ /usr/bin/time (команда)

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

1. Измерение времени исполнения команды с помощью time Bash:

$ time wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bubuntu20.04_all.deb
--2021-03-18 21:21:57--  https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bubuntu20.04_all.deb
Распознаётся repo.zabbix.com (repo.zabbix.com)… 178.128.6.101, 2604:a880:2:d0::2062:d001
Подключение к repo.zabbix.com (repo.zabbix.com)|178.128.6.101|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 3456 (3,4K) [application/octet-stream]
Сохранение в: «zabbix-release_5.2-1+ubuntu20.04_all.deb»

zabbix-release_5.2- 100%[===================>]   3,38K  --.-KB/s    за 0s      

2021-03-18 21:21:58 (322 MB/s) - «zabbix-release_5.2-1+ubuntu20.04_all.deb» сохранён [3456/3456]


real	0m1,026s
user	0m0,014s
sys	0m0,005s

Часть, на которую необходимо обратить внимание, - это последние три строки, которые были выведены по команде time.

real	0m1,026s
user	0m0,014s
sys	0m0,005s

Вот что значит эта информация:

real - фактическое количество времени, которое потребовалось, чтобы запустить команду.
user - количество времени, которое процессор провел в пользовательском режиме.
sys - количество времени, которое процессор провел в режиме ядра.

2. Измерение времени исполнения команды с помощью GNU time:

$ /usr/bin/time wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bubuntu20.04_all.deb
--2021-03-18 21:38:07--  https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bubuntu20.04_all.deb
Распознаётся repo.zabbix.com (repo.zabbix.com)… 178.128.6.101, 2604:a880:2:d0::2062:d001
Подключение к repo.zabbix.com (repo.zabbix.com)|178.128.6.101|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 3456 (3,4K) [application/octet-stream]
Сохранение в: «zabbix-release_5.2-1+ubuntu20.04_all.deb»

zabbix-release_5.2- 100%[===================>]   3,38K  --.-KB/s    за 0s      

2021-03-18 21:38:08 (172 MB/s) - «zabbix-release_5.2-1+ubuntu20.04_all.deb» сохранён [3456/3456]

0.01user 0.00system 0:00.75elapsed 1%CPU (0avgtext+0avgdata 7440maxresident)k
0inputs+8outputs (0major+438minor)pagefaults 0swaps

Мы рассмотрим только две последние строки из GNU time.

0.01user 0.00system 0:00.75elapsed 1%CPU (0avgtext+0avgdata 7440maxresident)k
0inputs+8outputs (0major+438minor)pagefaults 0swaps

Это дает ту же информацию, что и time, а также более подробную статистику и очень удобное для восприятия человеком измерение использования процессора.

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