Печать времени выполнения команды оболочки
можно ли распечатать время выполнения команды оболочки со следующей комбинацией?
root@hostname:~# "command to execute" && echo "execution time"
8 ответов:
не забывайте, что есть разница между Баша строение
time(который должен быть вызван по умолчанию, когда вы делаетеtime command) и/usr/bin/time(который должен потребовать, чтобы вы назвали ее полный путь).строение
timeвсегда печатает в stderr, но/usr/bin/timeпозволит вам отправлять выходные данные time в определенный файл, поэтому вы не вмешиваетесь в поток stderr выполняемой команды. Кроме того,/usr/bin/timeформат настраивается в командной строке или by переменная окруженияTIME, в то время как Баш построен и только настроитьTIMEFORMATпеременные среды.$ time factor 1234567889234567891 # builtin 1234567889234567891: 142662263 8653780357 real 0m3.194s user 0m1.596s sys 0m0.004s $ /usr/bin/time factor 1234567889234567891 1234567889234567891: 142662263 8653780357 1.54user 0.00system 0:02.69elapsed 57%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+215minor)pagefaults 0swaps $ /usr/bin/time -o timed factor 1234567889234567891 # log to file `timed` 1234567889234567891: 142662263 8653780357 $ cat timed 1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+217minor)pagefaults 0swaps
time- это встроенная команда в большинстве оболочек, которая записывает информацию о времени выполнения в tty.вы также можете попробовать что-то вроде
start_time=`date +%s` <command-to-execute> end_time=`date +%s` echo execution time was `expr $end_time - $start_time` s.или
bash:start_time=`date +%s` <command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s
root@hostname:~# time [command]Он также различает между используемым реальным временем и используемым системным временем.
для построчного измерения дельты, попробовать gnonom.
это утилита командной строки, немного похожая на ts moreutils, чтобы добавить информацию о метке времени в стандартный вывод другой команды. Полезно для длительных процессов, где вы хотели бы историческую запись того, что так долго.
Piping anything to gnomon будет добавлять метку времени к каждой строке, указывая, как долго эта строка была последней строкой в буфере-то есть, как долго понадобилась следующая строка, чтобы появиться. По умолчанию gnomon будет отображать секунды, прошедшие между каждой строкой,но это настраивается.
добавление к ответу @ mob:
добавление
%Ntodate +%sдает нам точность наносекунды:start=`date +%s%N`;<command>;end=`date +%s%N`;echo `expr $end - $start`
Если я начинаю длительный процесс, как копия или хэш, и я хочу знать позже, сколько времени это заняло, я просто делаю это:
$ date; sha1sum reallybigfile.txt; dateчто приведет к следующему результату:
Tue Jun 2 21:16:03 PDT 2015 5089a8e475cc41b2672982f690e5221469390bc0 reallybigfile.txt Tue Jun 2 21:33:54 PDT 2015конечно, как реализовано здесь, это не очень точно и не вычисляет затраченное время. Но это грязь просто и иногда все, что вам нужно.
