Ответы:
Попробуйте просто time
вместо timethis
.
Хотя следует помнить, что часто есть встроенная версия оболочки времени и двоичная версия, которая дает результаты в разных форматах:
$ time wget -q -O /dev/null https://unix.stackexchange.com/
real 0m0.178s
user 0m0.003s
sys 0m0.005s
против
$ \time wget -q -O /dev/null https://unix.stackexchange.com/
0.00user 0.00system 0:00.17elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+613minor)pagefaults 0swaps
В отличие от вашей программы «timethis», вы получаете три значения обратно. Это разбито на Что такое «системное время» при использовании «времени» в командной строке , но вкратце: реальное означает «время настенных часов», в то время как пользователь и sys показывают время процессора, разделенное между обычным кодом и системными вызовами.
Используя исполняемый файл time
вместо встроенной оболочки, вы можете указать формат вывода и значения. Например, получить реальное прошедшее время вместе с именем команды и параметрами
/usr/bin/time --format='%C took %e seconds' sleep 3
sleep 3 took 3.00 seconds
Обратите внимание, что вы должны указать путь для time
, иначе вы по умолчанию будете использовать встроенную оболочку.
/usr/bin
в их ПУТИ?
time
будет использоваться встроенная утилита оболочки .
command time
или \time
для выполнения утилиты вместо встроенного.
@galois: различные оболочки имеют несколько «встроенных» команд, которые имеют приоритет над чем-либо в пути. Обычно это выгодно; встроенные модули будут работать быстрее (потому что не вызывать внешний файл) и, как правило, дают желаемый результат (т. е. в случае команды времени вам обычно все равно, какую версию вы используете, если только вы не хотите использовать " --format "флаг).
Таким образом, «время» без каких-либо специальных символов (например, /), чтобы он выглядел как путь, в конечном итоге приведет к запуску встроенного независимо от того, как выглядит ваш PATH.
Чтобы заставить оболочку использовать внешнюю команду времени, вы должны указать путь