コマンド/プロセスの開始時刻とプロセスの実行時間を知っていると思います。 LinuxおよびUnixライクなシステム。しかし、コマンドまたはプロセスがいつ終了したか、および/またはコマンド/プロセスが完了するのにかかった合計時間はどのようにしてわかりますか?まあ、それは簡単です! Unixライクなシステムには、「GNUtime」という名前のユーティリティがあります。 これは、この目的のために特別に設計されています。 Timeユーティリティを使用すると、Linuxオペレーティングシステムでのコマンドまたはプログラムの合計実行時間を簡単に測定できます。良い点は、ほとんどのLinuxディストリビューションに「time」コマンドがプリインストールされているため、インストールに煩わされる必要がないことです。
Linuxでのコマンドまたはプロセスの実行時間を検索する
コマンド/プログラムの実行時間を測定するには、実行するだけです。
$ /usr/bin/time -p ls
または、
$ time ls
出力例:
dir1 dir2 file1 file2 mcelog real 0m0.007s user 0m0.001s sys 0m0.004s
$ time ls -a . .bash_logout dir1 file2 mcelog .sudo_as_admin_successful .. .bashrc dir2 .gnupg .profile .wget-hsts .bash_history .cache file1 .local .stack real 0m0.008s user 0m0.001s sys 0m0.005s
上記のコマンドは、'ls
の合計実行時間を表示します ' 指図。 「ls
」を置き換えます 「任意のコマンド/プロセスを使用して、合計実行時間を見つけます。
ここで
real
-コマンド/プログラムにかかった合計時間を指しますuser
-ユーザーモードでプログラムにかかる時間を指します-
sys
-カーネルモードでプログラムにかかる時間を指します。
コマンドを特定の時間だけ実行するように制限することもできます。詳細については、次のガイドを参照してください。
- Linuxで特定の時間コマンドを実行する方法
時間と/usr/ bin / time
お気づきかもしれませんが、2つのコマンド'time' を使用しました および'/usr/bin/time
' 上記の例では。だから、あなたはそれらの違いは何であるか疑問に思うかもしれません。
まず、実際の'time
を見てみましょう 'は'type
を使用しています ' 指図。知らない人のために、タイプ コマンドは、Linuxコマンドに関する情報を見つけるために使用されます。詳細については、このガイドを参照してください。 。
$ type -a time time is a shell keyword time is /usr/bin/time
上記の出力でわかるように、時間は両方です
- BASHシェルに組み込まれているキーワード
- 実行可能ファイル、つまり
/usr/bin/time
シェルキーワードは実行可能ファイルよりも優先されるため、時間を実行するだけの場合 フルパスなしのコマンドでは、組み込みのシェルコマンドを実行します。ただし、 /usr/bin/time
を実行すると 、実際のGNU時間を実行します プログラム。したがって、実際のコマンドにアクセスするには、その明示的なパスを指定する必要がある場合があります。クリア?いいね!
組み込みの「time」シェルキーワードは、BASH、ZSH、CSH、KSH、TCSHなどのほとんどのシェルで使用できます。「time」シェルキーワードには、実行可能ファイルよりもオプションが少なくなっています。 'time'キーワードで使用できる唯一のオプションは、 -p
です。 。
'time'コマンドを使用して、特定のコマンド/プロセスの合計実行時間を見つける方法をマスターしました。 「GNU時間」ユーティリティについてもう少し知りたいですか?続きを読む!
「GNUtime」プログラムについての簡単な紹介
GNUタイムプログラムは、指定された引数を使用してコマンド/プログラムを実行し、コマンドの完了後にシステムリソースの使用状況を標準出力として要約します。 'time'キーワードとは異なり、GNUタイムプログラムは、コマンド/プロセスで使用された時間を表示するだけでなく、メモリ、I / O、IPC呼び出しなどの他のリソースも表示します。
Timeコマンドの一般的な構文は次のとおりです。
/usr/bin/time [options] command [arguments...]
上記の構文の「オプション」は、特定の機能を実行するためにtimeコマンドで使用できるフラグのセットを指します。利用可能なオプションのリストを以下に示します。
-
-f
、--format
-このオプションを使用して、必要に応じて出力の形式を指定します。 -
-p
、--portability
-ポータブル出力形式を使用します。 -
-o
ファイル、--output
=ファイル -出力をFILEに書き込みます 標準出力として表示する代わりに。 -
-a
、--append
-出力を上書きするのではなく、ファイルに追加します。 -
-v
、--verbose
-このオプションは、「time」ユーティリティの出力の詳細な説明を表示します。 --quiet
-このオプションは、time'time'ユーティリティがプログラムのステータスを報告するのを防ぎます。
オプションなしで「GNUtime」プログラムを使用すると、次のような出力が表示されます。
$ /usr/bin/time wc /etc/hosts 9 28 273 /etc/hosts 0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k 0inputs+0outputs (0major+73minor)pagefaults 0swaps
シェルビルトインのキーワード「time」を使用して同じコマンドを実行すると、出力が少し異なります。
$ time wc /etc/hosts 9 28 273 /etc/hosts real 0m0.006s user 0m0.001s sys 0m0.004s
場合によっては、ターミナルに表示するのではなく、システムリソース使用量の出力をファイルに書き込みたいことがあります。これを行うには、 -o
を使用します 以下のようなフラグ。
$ /usr/bin/time -o file.txt ls dir1 dir2 file1 file2 file.txt mcelog
出力からわかるように、Timeユーティリティは出力を表示しません。なぜなら、出力をfile.txt
という名前のファイルに書き込むからです。 。このファイルを見てみましょう:
$ cat file.txt 0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2512maxresident)k 0inputs+0outputs (0major+106minor)pagefaults 0swaps
-oを使用する場合 フラグ、「file.txt」という名前のファイルがない場合は、出力を作成して書き込みます。 file.txt
の場合 はすでに存在しているため、コンテンツが上書きされます。
-a
を使用してファイルを上書きする代わりに、ファイルに出力を追加することもできます。 フラグ。
$ /usr/bin/time -a file.txt ls
-f
フラグを使用すると、ユーザーは好みに応じて出力の形式を制御できます。たとえば、次のコマンドは'ls
の出力を表示するとします。 'コマンドで、ユーザー、システム、合計時間を表示します。
$ /usr/bin/time -f "\t%E real,\t%U user,\t%S sys" ls dir1 dir2 file1 file2 mcelog 0:00.00 real, 0.00 user, 0.00 sys
組み込みのシェルコマンド「time」がGNUタイムプログラムのすべての機能をサポートしているわけではないことに注意してください。
GNUタイムユーティリティの詳細については、manページを参照してください。
$ man time
Bashの組み込みの「Time」キーワードについて詳しく知るには、次のコマンドを実行してください:
$ help time