Linux でコマンドまたはプロセスの実行時間を調べる方法

Linux でコマンドまたはプロセスの実行時間を調べる方法

Unix ライクなシステムでは、コマンドまたはプロセスの実行がいつ開始されたか、またプロセスがどのくらいの時間実行されているかがわかる場合があります。 しかし、コマンドまたはプロセスがいつ終了したか、または完了するまでにどのくらいの時間がかかったかをどのように知るのでしょうか? Unix 系システムでは、これは非常に簡単です。このために特別に設計された GNU time というプログラムがあります。 time プログラムを使用すると、Linux オペレーティング システムでのコマンドまたはプログラムの合計実行時間を簡単に測定できます。 time コマンドはほとんどの Linux ディストリビューションにプリインストールされているため、インストールする必要はありません。

Linux でコマンドまたはプロセスの実行時間を調べる

コマンドまたはプログラムの実行時間を測定するには、次のコマンドを実行します。

$ /usr/bin/time -p ls

または、

$ time ls

サンプル出力:

dir1 dir2 file1 file2 mcelog
実数 0分0.007秒
ユーザー 0分0.001秒
システム 0分0.004秒
$ 時間 ls -a
. .bash_logout dir1 file2 mcelog .sudo_as_admin_successful
.. .bashrc dir2 .gnupg .profile .wget-hsts
.bash_history .cache ファイル1 .local .stack
実数 0分0.008秒
ユーザー 0分0.001秒
システム 0分0.005秒

上記のコマンドは、ls コマンドの合計実行時間を表示します。 ls を任意のコマンドまたはプロセスに置き換えて、合計実行時間を調べることができます。

出力の詳細:

  1. 実数 - コマンドまたはプログラムにかかった合計時間を指します
  2. ユーザー - プログラムがユーザーモードで費やす時間を指します
  3. sys - プログラムがカーネルモードで費やす時間を指します

コマンドを特定の期間のみ実行するように制限することもできます。詳細については、次のチュートリアルを参照してください。

Linux でコマンドを特定の時間に実行する方法

時間と/usr/bin/time

上記の例では、time と /usr/bin/time という 2 つのコマンドを使用していることにお気づきかもしれません。 それで、その違いは何なのか疑問に思うかもしれません。

まず、type コマンドを使用して、time コマンドが何であるかを確認しましょう。不明な Linux コマンドについては、type コマンドを使用して関連するコマンドに関する情報を検索します。 詳細については、このガイドを参照してください。

$ type -a 時間
時間はシェルのキーワードです
時間は /usr/bin/time です

上記の出力からわかるように、時間には 2 つの意味があります。

  • 1つはBASHシェルの組み込みキーワードです
  • 1つは/usr/bin/timeなどの実行可能ファイルです。

シェルのキーワードは実行可能ファイルよりも優先されるため、完全なパスを指定せずに time コマンドを実行すると、シェルの組み込みコマンドが実行されます。 ただし、/usr/bin/time を実行すると、実際の G​​NU time コマンドが実行されます。 したがって、実際のコマンドを実行するには、完全なパスを指定する必要がある場合があります。

BASH、ZSH、CSH、KSH、TCSH などのほとんどのシェルでは、組み込みキーワード time が使用できます。 time キーワードには実行可能ファイルよりもオプションが少なく、使用できるオプションは -p のみです。

これで、time コマンドを使用して、特定のコマンドまたはプロセスの合計実行時間を調べる方法がわかりました。 GNU 時間ツールについてさらに詳しく知りたいですか? 読み続けてください!

GNU time プログラムの簡単な紹介

GNU time プログラムは、指定された引数を使用してコマンドまたはプログラムを実行し、コマンドの完了後にシステム リソースの使用状況を標準出力に要約します。 time キーワードとは異なり、GNU time プログラムは、コマンドまたはプロセスの実行時間だけでなく、メモリ、I/O、IPC 呼び出しなどの他のリソースも表示します。

time コマンドの構文は次のとおりです。

/usr/bin/time [オプション] コマンド [引数...]

上記の構文のオプションは、time コマンドで特定の機能を実行するために使用できる一連のオプションを指します。 利用可能なオプションは次のとおりです。

  • -f, –format —— このオプションを使用して、要件に応じて出力形式を指定します。
  • -p, --portability — 簡潔な出力形式を使用します。
  • -o file, --output=FILE — 出力を標準出力ではなく指定されたファイルに書き込みます。
  • -a, --append — 出力をファイルに上書きするのではなく追加します。
  • -v、–verbose – このオプションは、time コマンドの出力に関する詳細情報を表示します。
  • --quiet – このオプションは、time コマンドがプログラムのステータスを報告しないようにします。

オプションなしで GNU time コマンドを使用すると、次の出力が表示されます。

$ /usr/bin/time wc /etc/hosts
9 28 273 /etc/ホスト
0.00ユーザー 0.00システム 0:00.00経過 66%CPU (0平均テキスト+0平均データ 2024最大常駐)k
0入力+0出力(0メジャー+73マイナー)ページフォールト0スワップ

シェルのキーワード time を使用して同じコマンドを実行すると、出力は少し異なります。

$ 時間 wc /etc/hosts
9 28 273 /etc/ホスト
実数 0分0.006秒
ユーザー 0分0.001秒
システム 0分0.004秒

場合によっては、システム リソースの使用状況をターミナルではなくファイルに出力したいことがあります。 これを行うには、以下に示すように -o オプションを使用します。

$ /usr/bin/time -o ファイル.txt ls
dir1 dir2 file1 file2 file.txt mcelog

ご覧のとおり、time コマンドはターミナルに何も出力しません。出力をファイル file.txt に書き込んだためです。 このファイルの内容を見てみましょう:

$ cat ファイル.txt
0.00ユーザー 0.00システム 0:00.00経過 66%CPU (0平均テキスト+0平均データ 2512最大常駐)k
0入力+0出力(0メジャー+106マイナー)ページフォールト0スワップ

-o オプションを使用すると、file.txt というファイルがない場合には、ファイルが作成され、そこに出力が書き込まれます。ファイルが存在する場合は、元の内容が上書きされます。

-a オプションを使用すると、ファイルの内容を上書きするのではなく、出力をファイルに追加することができます。

$ /usr/bin/time -a file.txt ls

-f オプションを使用すると、ユーザーは好みに応じて出力形式を制御できます。 たとえば、次のコマンドの出力には、ユーザー、システム、合計時間のみが表示されます。

$ /usr/bin/time -f "\t%E 実数、\t%U ユーザー、\t%S システム" ls
dir1 dir2 file1 file2 mcelog
0:00.00 実数、0.00 ユーザー、0.00 システム

シェルに組み込まれている time コマンドには、GNU time プログラムのすべての機能が備わっているわけではないことに注意してください。

GNU time プログラムの詳細な説明は、man コマンドを使用して表示できます。

$ man time

Bash 組み込みの time キーワードの詳細については、次を実行します。

$ help time

要約する

上記は、Linux でコマンドまたはプロセスの実行時間を調べる方法について紹介したものです。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • PythonはLinuxプロセスを判別し、プロセスを強制終了します
  • Linuxでプロセスを強制終了する方法の詳細な説明
  • Linux で占有ポートを見つけてプロセスを強制終了する方法
  • Linux で killall コマンドを使用してプロセスを終了する 8 つの例
  • プロセスのすべての情報を表示するLinuxメソッドの例
  • Linuxシステムでノードプロセスを実行しているが、プロセスを強制終了できない問題を解決します

<<:  Vue3 のレンダリング関数における互換性のない変更の詳細な説明

>>:  MySQL サービス 1067 エラーの解決策: mysql 実行可能ファイルのパスを変更する

推薦する

MySQL におけるデフォルトの使用法の詳細な説明

NULL および NOT NULL 修飾子、DEFAULT 修飾子、AUTO_INCREMENT 修...

HTML の空リンク href="#" と href="javascript:void(0)" の違い

# には位置情報が含まれます。デフォルトのアンカーは #top で、これは Web ページの上部です...

Win10 MySQLでCSVをエクスポートする2つの方法

Win10 で csv をエクスポートする方法は 2 つあります。1 つ目はツールを使用することです...

Node.jsはexpress-fileuploadミドルウェアを使用してファイルをアップロードします

目次プロジェクトを初期化するサーバーの作成クライアントを初期化するコンポーネントの記述ファイルアップ...

タグが新しいページを開くかどうかという問題。主要ウェブサイトの開設状況をまとめました

a タグが新しいページを開くかどうか: (1)百度百科事典:ヘッダーが異なる場合は新しいページが開き...

dockerにmysqlをインストールした後にNavicatが接続できない問題に対する完璧な解決策

1. Dockerがイメージをプルするdocker pull mysql (デフォルトで最新バージョ...

あなたのウェブサイトはIE8に適していますか?

オリンピック期間中にIE8ベータ2がリリースされ、英語版のリリースに合わせて中国語版も第一波でリリー...

州と市町村の連携を簡単に実現するJavaScript

この記事では、省と市の簡単な連携を実現するためのJavaScriptの具体的なコードを参考までに紹介...

Ubuntu 18.04 (コミュニティ エディション) に Docker CE をインストールする方法

古いバージョンをアンインストールする以前に古いバージョンをインストールしたことがある場合は、まずそれ...

MySQL のバックアップとリカバリの設計アイデア

背景まず、背景を説明します。ある制約により、当社の現在のバックアップ戦略では、1 日おきにフル バッ...

JavaScript strictモードの概要 strictを使用する

目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...

MySQL と接続関連のタイムアウトの詳細な概要

MySQL と接続関連のタイムアウト序文:今日、同僚から、データ量が多いときに MySQL データベ...

Reactホームページの読み込みが遅い問題のパフォーマンス最適化事例の詳細な説明

しばらくReactを勉強した後、実践してみたいと思います。そこで、個人のブログのウェブサイトを再構築...

div 内の img と span の垂直方向の中央揃えの問題について

以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピー<htm...

小さな三角形の実装コードを含む CSS ナビゲーション バー メニュー

多くの Web ページにはナビゲーション バーに小さな三角形があり、この機能を実装するのは実は非常に...