Команда 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 для измерения количества времени и использования процессора для выполнения любой команды, которая нам нужна. Эти команды очень просты в освоении, но довольно часто могут пригодиться.