Распечатать время выполнения скрипта из скрипта?

Распечатать время выполнения скрипта из скрипта?

Я ищу PDF-файлы во всех каталогах, за исключением тех, которые .texpadtmpизначально основаны на кодеэто обсуждение.

function findpdfs() {
find . -iname '*.pdf' -not -path "*.texpadtmp*" | while read filename
do
  echo -e "\033[34;1m// === PDF Document:\033[33;1m $filename\033[0m"
  pdftotext -enc Latin1 "$filename" - | grep --color=always -i $1
  time         # TODO problem here!
done
}

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

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

Моя следующая цель — получить все значения времени выполнения и представить их в виде процентов в выходных данных в виде целых чисел, чтобы я мог приблизительно оценить, куда уходит большая часть временных ресурсов.

решение1

Метод №1 — Использование времени начала/окончания

Обычно вы увидите это там, где это делаете вы:

begin=$(date +%s) 
... do something ...
end=$(date +%s)

А затем вычтите $beginвремя из $endвремени, чтобы получить количество прошедших секунд.

tottime=$(expr $end - $begin)

Метод №2 — Использование команд времени

Другой метод — использовать timeкоманду, встроенную в Bash, или time program that's included with most Linux/Unix systems here,/bin/time`.

Проверить можно так:

$ type -a time
time is a shell keyword
time is /usr/bin/time
time is /bin/time

Вы используете его так:

встроенный
$ time sleep 5

real    0m5.004s
user    0m0.001s
sys 0m0.001s
автономный исполняемый файл
$ /bin/time sleep 5
0.00user 0.00system 0:05.00elapsed 0%CPU (0avgtext+0avgdata 628maxresident)k
0inputs+0outputs (0major+191minor)pagefaults 0swaps

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

$ time <cmd>

Таким образом, вы можете добавить префикс к своей pdf2textкоманде.

Связанный контент