時間コマンドを使用してコマンド実行の時間を計る方法
序章
コマンドまたはスクリプトの実行にかかった時間を知りたい場合があります。 開始時間と終了時間を追跡し、差を計算して期間を取得できます。 信頼できるストップウォッチアプリを入手して、その方法で追跡することもできます。 または、 time
指図。
コマンドラインには、追加のコードを自分で作成する必要をなくすのに役立つ、小さな単一目的のユーティリティがたくさんあります。 The time
コマンドはそのようなコマンドの1つです。 The time
コマンドは、 date
コマンド。システムの日付と時刻を提供します。 代わりに、プログラムまたはスクリプトの実行時間を計測し、所要時間を示します。
このチュートリアルでは、 time
コマンドを実行し、その出力を調べます。
このチュートリアルの例では(特に明記されていない限り)、 time
これはLinuxのBashシェルに組み込まれています。
ステップ1—タイミングコマンドの実行
コマンドの実行時間を計測するには、コマンドの前にプレフィックスを付けます time
.
ただし、実行方法 time
オペレーティングシステムによって異なります。 time
のようないくつかのシェルの組み込みコマンドとして両方存在します bash
と zsh
、およびGNUとして知られるスタンドアロンコマンド time
これは、 time
シェルに組み込まれています。
次のコマンドを使用して、方法を確認してください time
システムで動作します:
- type -a time
次のような出力が表示されます。
Outputtime is a shell keyword
time is /usr/bin/time
この場合、次のような組み込みのシェルコマンドがあります。 time
、およびのバージョン time
にインストール /usr/bin/time
.
GNUバージョンを使用したい場合 time
代わりに、接頭辞としてバックスラッシュを付けることができます。
- \time
そうしないと、シェルは代わりに組み込みバージョンを使用します。
注: fish
シェルは独自の実装を提供しません time
. たまたま使用している場合 fish
、GNUを持っていることを確認する必要があります time
コマンドがインストールされました。
GNUバージョンにはより高度なフォーマットオプションがありますが、どちらの方法も同じ目的を果たします。
を使用してタイミングプログラムの実行を調べてみましょう tree
ルート上のコマンド /
すべてのファイルとディレクトリのビジュアルツリーを一覧表示するファイルシステムの。
The tree
コマンドは、多くのシステムでデフォルトで常にインストールされるとは限りませんが、UbuntuおよびDebianシステムにインストールできます。 apt
:
- sudo apt install tree
macOSでは、インストールできます tree
自作で:
- brew install tree
今では tree
コマンドがインストールされている場合は、それを使用してシステム上のすべてのファイルを確認しますが、プレフィックスを付けます time
所要時間を確認するには:
- time tree /
ファイル情報がスクロールして表示されます。 最終的に、それは停止し、かかった時間を表示します。
Output# The output of tree will scroll by here.
166590 directories, 1568127 files
tree / 12.24s user 10.37s system 66% cpu 33.827 total
実行したコマンドに注意してください。 tree /
、によってエコーバックされます time
コマンドも。 出力にはいくつかの情報が表示されますが、今のところ、 total
と直前の番号:
Outputtree / 12.24s user 10.37s system 66% cpu 33.827 total
これは、コマンドの実行にかかった時間(秒単位)です。
The time
コマンドをキャンセルした場合にも、コマンドは機能します。 CTRL+C
. あなたが実行する場合 time tree /
もう一度そしてすぐにヒット CTRL+C
、 tree
コマンドはスクロールを停止し、 time
コマンドを停止する前に実行していた時間の結果。
ステップ2—リソース使用量を理解する
からの出力 time
合計期間に加えて、3つの値が含まれます。
Outputtree / 12.24s user 10.37s system 66% cpu 33.827 total
1つ目は、コマンドがユーザーモードで費やした合計時間(CPU秒単位)です。 それが価値です user
その後。
次の接尾辞 system
、は、コマンドがシステムモードまたはカーネルモードで費やした時間(ここでもCPU秒単位)です。
最後に、コマンドに割り当てられたCPUのパーセンテージ。接尾辞は cpu
.
の違い user
と system
時間は、CPU使用率がアクセスレベルごとに分類されていることです。 コードがユーザーモードで実行される場合、ハードウェアや参照メモリに直接アクセスすることはできず、委任のためにシステムのAPIに依存する必要があります。 これは、ほとんどのコードがシステム上で実行される方法であり、その分離により、クラッシュは常に回復可能です。
一方、カーネルモードは、実行中のコードがシステムハードウェアに無制限にアクセスできる場合です。 このモードは、オペレーティングシステムの最も信頼できる機能のためにほとんど予約されています。 完全にアクセスできるため、カーネルモードでクラッシュすると、クラッシュがひどくなり、システムがダウンする傾向があります。
結論
このチュートリアルでは、 time
コマンドを実行して、コマンドとスクリプトの実行にかかる時間とその時間がどこに行くかを確認します。 あなたのシェルの time
コマンドを使用すると、追加のスクリプトを実行せずに、コマンドの実行期間のタイミングにすばやくアクセスできます。