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

68

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

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

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

wget foo.com took 3 seconds.
ripper234
источник

Ответы:

95

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

mattdm
источник
26

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

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

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

forcefsck
источник
4
обратите внимание: путь важен. Не просто используйте время в bash. Вместо этого используйте / usr / bin / time
CodeFarmer
1
какая разница, если /usr/binв их ПУТИ?
Галуа
@galois Разница в том, что без явного пути timeбудет использоваться встроенная утилита оболочки .
Кусалананда
Можно также использовать command timeили \timeдля выполнения утилиты вместо встроенного.
forcefsck
0

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

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

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

Том Пайерл
источник