序章

コマンドまたはスクリプトの実行にかかった時間を知りたい場合があります。 開始時間と終了時間を追跡し、差を計算して期間を取得できます。 信頼できるストップウォッチアプリを入手して、その方法で追跡することもできます。 または、 time 指図。

コマンドラインには、追加のコードを自分で作成する必要をなくすのに役立つ、小さな単一目的のユーティリティがたくさんあります。 The time コマンドはそのようなコマンドの1つです。 The time コマンドは、 date コマンド。システムの日付と時刻を提供します。 代わりに、プログラムまたはスクリプトの実行時間を計測し、所要時間を示します。

このチュートリアルでは、 time コマンドを実行し、その出力を調べます。

このチュートリアルの例では(特に明記されていない限り)、 time これはLinuxのBashシェルに組み込まれています。

ステップ1—タイミングコマンドの実行

コマンドの実行時間を計測するには、コマンドの前にプレフィックスを付けます time.

ただし、実行方法 time オペレーティングシステムによって異なります。 time のようないくつかのシェルの組み込みコマンドとして両方存在します bashzsh、およびGNUとして知られるスタンドアロンコマンド time これは、 time シェルに組み込まれています。

次のコマンドを使用して、方法を確認してください time システムで動作します:

  1. type -a time

次のような出力が表示されます。

Output
time is a shell keyword time is /usr/bin/time

この場合、次のような組み込みのシェルコマンドがあります。 time、およびのバージョン time にインストール /usr/bin/time.

GNUバージョンを使用したい場合 time 代わりに、接頭辞としてバックスラッシュを付けることができます。

  1. \time

そうしないと、シェルは代わりに組み込みバージョンを使用します。

注: fish シェルは独自の実装を提供しません time. たまたま使用している場合 fish、GNUを持っていることを確認する必要があります time コマンドがインストールされました。

GNUバージョンにはより高度なフォーマットオプションがありますが、どちらの方法も同じ目的を果たします。

を使用してタイミングプログラムの実行を調べてみましょう tree ルート上のコマンド / すべてのファイルとディレクトリのビジュアルツリーを一覧表示するファイルシステムの。

The tree コマンドは、多くのシステムでデフォルトで常にインストールされるとは限りませんが、UbuntuおよびDebianシステムにインストールできます。 apt:

  1. sudo apt install tree

macOSでは、インストールできます tree 自作で:

  1. brew install tree

今では tree コマンドがインストールされている場合は、それを使用してシステム上のすべてのファイルを確認しますが、プレフィックスを付けます time 所要時間を確認するには:

  1. 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 と直前の番号:

Output
tree / 12.24s user 10.37s system 66% cpu 33.827 total

これは、コマンドの実行にかかった時間(秒単位)です。

The time コマンドをキャンセルした場合にも、コマンドは機能します。 CTRL+C. あなたが実行する場合 time tree / もう一度そしてすぐにヒット CTRL+Ctree コマンドはスクロールを停止し、 time コマンドを停止する前に実行していた時間の結果。

ステップ2—リソース使用量を理解する

からの出力 time 合計期間に加えて、3つの値が含まれます。

Output
tree / 12.24s user 10.37s system 66% cpu 33.827 total

1つ目は、コマンドがユーザーモードで費やした合計時間(CPU秒単位)です。 それが価値です user その後。

次の接尾辞 system、は、コマンドがシステムモードまたはカーネルモードで費やした時間(ここでもCPU秒単位)です。

最後に、コマンドに割り当てられたCPUのパーセンテージ。接尾辞は cpu.

の違い usersystem 時間は、CPU使用率がアクセスレベルごとに分類されていることです。 コードがユーザーモードで実行される場合、ハードウェアや参照メモリに直接アクセスすることはできず、委任のためにシステムのAPIに依存する必要があります。 これは、ほとんどのコードがシステム上で実行される方法であり、その分離により、クラッシュは常に回復可能です。

一方、カーネルモードは、実行中のコードがシステムハードウェアに無制限にアクセスできる場合です。 このモードは、オペレーティングシステムの最も信頼できる機能のためにほとんど予約されています。 完全にアクセスできるため、カーネルモードでクラッシュすると、クラッシュがひどくなり、システムがダウンする傾向があります。

結論

このチュートリアルでは、 time コマンドを実行して、コマンドとスクリプトの実行にかかる時間とその時間がどこに行くかを確認します。 あなたのシェルの time コマンドを使用すると、追加のスクリプトを実行せずに、コマンドの実行期間のタイミングにすばやくアクセスできます。