Відповіді:
Додати 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
за допомогою вбудованого.
Для лінійного вимірювання дельти спробуйте гномон .
Це утиліта командного рядка, схожа на 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
час?