Ответы:
Добавьте time
перед командой, которую вы хотите измерить. Например: time ls
.
Вывод будет выглядеть так:
real 0m0.606s
user 0m0.000s
sys 0m0.002s
Пояснения к real
, user
и sys
(с man time
):
real
: Истекшее реальное время (настенные часы), использованное процессом, в секундах.user
: Общее количество ЦП-секунд, которые процесс использовал напрямую (в пользовательском режиме), в секундах.sys
: Общее количество процессорных секунд, используемых системой от имени процесса (в режиме ядра), в секундах.sudo apt-get install time
если вы используете оболочку, time
которая не является встроенной.
time
встроенной команды Bash , но man time
он будет о исполняемом файле (например /usr/bin/time
, из time
пакета), и его вывод будет выглядеть иначе. Также в Bash вы можете запустить help time
для помощи со встроенным.
Для построчного измерения дельты попробуйте gnomon .
Это утилита командной строки, немного похожая на ts moreutils, для добавления метки времени к стандартному выводу другой команды. Полезно для длительных процессов, где вы хотите получить исторический отчет о том, что занимает так много времени.
Передача чего-либо в gnomon приведет к добавлению временной метки к каждой строке, указывающей, как долго эта строка была последней строкой в буфере, то есть сколько времени потребовалось для появления следующей строки. По умолчанию, gnomon будет отображать секунды, прошедшие между каждой строкой, но это настраивается.
sudo npm i gnomon -g
если у вас есть npm
. Не уверен, насколько хорошо он работает против строк «прогресса», используя '\ r' (оставаясь на одной и той же строке): в этом случае я бы хотел, чтобы он считал все как одну длинную строку, а не как отдельные
Вы можете использовать time
:
time ls -R
date +"%T" && cp -r ./file /destination/folder/here && date +"%T"
Выполнение этой команды в терминале даст вам общее время для копирования файла
find
команда - без 2>/dev/null
перенаправления - выдает обильные Permission denied
сообщения. Однако добавление 2>/dev/null
к этой команде нарушает time
часть этой команды. Следующее обеспечивает хороший компромисс: START="$(date +"%s")" && find 2>/dev/null / -path /mnt -prune -o -name "*libname-server-2.a*" -print; END="$(date +"%s")"; TIME="$((END - START))"; printf 'find command took %s sec\n' "$TIME"
предоставление (например) /usr/lib/libname-server-2.a find command took 3 sec
в качестве единственного вывода.
time sudo find / -path /mnt -prune -o -name "*libname-server-2.a*" -print
(то есть, как sudo
) - избегая этих многочисленных Permission denied
предупреждений.
Время от времени я нуждаюсь в секундомере, чтобы подсчитать, сколько времени занимает такое действие, как загрузка моего приложения, и в этом случае многие решения здесь бесполезны.
Для этого мне нравится использовать SW .
wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw
sw
- start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
- start a stopwatch from the last saved start time (or current time if no last saved start time exists)
- "-r" stands for --resume
time -v command
-v
дает больше информации
real
,user
иsys
раз в том , что эта команда возвращает?