スクリプトからスクリプトの実行時間を印刷するには?

スクリプトからスクリプトの実行時間を印刷するには?

私は、.texpadtmp元のコードに基づいて、すべてのディレクトリ内のPDFファイルを検索しています。この議論

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 に組み込まれているコマンドまたは/bin/time`を使用することですtime program that's included with most Linux/Unix systems here,

次のように確認できます:

$ 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コマンドの前にプレフィックスを付けることができます。

関連情報