スクリプトからスクリプトの実行時間を印刷しますか?

スクリプトからスクリプトの実行時間を印刷しますか?

.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もう1つの方法は、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プレフィックスを追加できます。

関連情報