it-swarm-ru.tech

Как мне определить время конкретной команды?

(Линукс эквивалент TimeThis.exe)

Что-то вроде:

timethis wget foo.com
Receiving foo.com  
...

wget foo.com took 3 seconds.
71
ripper234

Попробуйте просто time вместо timethis.

Хотя имейте в виду, что часто есть встроенная в Shell версия времени и двоичной версии, которая дает результаты в разных форматах:

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

103
mattdm

Используя исполняемый файл time вместо встроенной оболочки, вы можете указать формат вывода и значения. Например. получить реальное прошедшее время вместе с именем команды и параметрами

/usr/bin/time --format='%C took %e seconds' sleep 3
sleep 3 took 3.00 seconds

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

26
forcefsck

@galois: различные оболочки имеют несколько "встроенных" команд, которые имеют приоритет над чем-либо в пути. Обычно это выгодно; встроенные модули будут работать быстрее (потому что не вызывать внешний файл) и, как правило, дают желаемый результат (т. е. в случае команды времени вам обычно все равно, какую версию вы используете, если только вы не хотите использовать " --format "флаг).

Таким образом, "время" без каких-либо специальных символов (например, /), чтобы он выглядел как путь, приведет к запуску встроенного независимо от того, как выглядит ваш PATH.

Чтобы заставить Shell использовать внешнюю команду времени, вы должны указать путь

0
Tom Payerle