GNU/Linux >> Linux の 問題 >  >> Linux

初心者向けのLinuxタイムコマンドチュートリアル(例付き)

プログラムを実行しているときに、そのシステムリソースの使用状況を知りたい場合があります。プロセスがカーネルモードとユーザーモードで費やした時間、およびその他の情報など。

ありがたいことに、時間と呼ばれるツールがあります -それはこの目的のために特別に構築されています。この記事では、わかりやすい例を使用して、「time」コマンドの基本について説明します。

ただし、その前に、このチュートリアルのすべての例がUbuntu18.04LTSマシンでテストされていることを言及する価値があります。

Linux時間コマンド

Linuxのtimeコマンドを使用すると、プログラムを実行して、システムリソースの使用状況を要約できます。その構文は次のとおりです。

time [OPTIONS] COMMAND [ARGS]

ツールのマニュアルページで説明されている方法は次のとおりです。

time run the program COMMAND with any given arguments ARG....  When COMMAND finishes, time displays
information about resources used by COMMAND (on the standard error output, by default). 

If COMMAND exits with non-zero status, time displays a warning message and the exit status.

time determines which information to display about the resources used by the COMMAND from the
string FORMAT. If no format is specified on the command line, but the TIME environment variable
is set, its value is used as the format. Otherwise, a default format built into time is used.

Options to time must appear on the command line before COMMAND.  Anything on the command line after
COMMAND is passed as arguments to COMMAND.

以下は、時間コマンドがどのように機能するかについてのより良いアイデアを与えるはずのいくつかのQ&Aスタイルの例です。

Q1。時間コマンドの使い方は?

基本的な使い方は簡単です。実行したいコマンド/プログラムを入力として「time」を実行するだけです。

たとえば、次のようにtimeコマンドを使用しました。

time ping howtoforge.com

そして、これが出力です:

PING howtoforge.com (104.24.0.68) 56(84) bytes of data.
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=1 ttl=59 time=93.8 ms
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=2 ttl=59 time=91.5 ms
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=3 ttl=59 time=93.1 ms
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=4 ttl=59 time=102 ms
^C
--- howtoforge.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 91.510/95.249/102.490/4.267 ms

real    0m3.472s
user    0m0.000s
sys    0m0.004s

出力の最後の3行は、timeコマンドによって追加されます。 「real」は「ping」コマンドが実行から終了までにかかった実時間を意味しますが、「user」と「sys」はそれぞれ「ping」ユーザースペースとカーネルスペースにかかった時間です。これらの3回の詳細については、こちらからアクセスできます。

Q2。 'time'にその出力をファイルに書き込むようにするにはどうすればよいですか?

timeコマンドで出力をターミナルではなくファイルに書き込む場合は、-oコマンドラインオプションを使用します。これにより、入力としてファイル名/パスが必要になります。

例:

/usr/bin/time -o /home/himanshu/time-output.txt ping howtoforge.com

このコマンドは、pingの出力をstdoutに表示し、「time」コマンドの出力はテキストファイルに書き込まれます。

:シェルビルトインのtimeコマンドには-oオプションがないため、「time」の代わりに/ usr / bin/timeを使用しました。

デフォルトでは、このコマンドを実行するたびに、出力ファイルが上書きされます。ただし、必要に応じて、-aコマンドラインオプションを使用して、新しい出力が追加されていることを確認できます。

Q3。時間を作成して詳細な出力を生成するにはどうすればよいですか?

これは、-vコマンドラインオプションを使用して実行できます。たとえば、「ping」コマンドで「time」を実行しているときにこのオプションを使用すると、「time」コマンドの出力に次の詳細が生成されました。

Command being timed: "ping howtoforge.com"
    User time (seconds): 0.00
    System time (seconds): 0.00
    Percent of CPU this job got: 0%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 0:11.77
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 3064
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 158
    Voluntary context switches: 14
    Involuntary context switches: 0
    Swaps: 0
    File system inputs: 0
    File system outputs: 0
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0

したがって、timeコマンドがこのモードで他の多くの詳細を生成することがわかります。

Q4。時間コマンド出力をカスタマイズする方法は?

timeコマンドには、このツールの出力をカスタマイズできる「format」コマンドラインオプションもあります。これは、「time」コマンドでサポートされている任意のタイプの情報をフェッチするために使用できる一連のリソース指定子を提供します(前のセクションを参照)。

たとえば、次の実行でのtimeコマンド:

/usr/bin/time -f "\t%C [Command details],\t%K [Total memory usage],\t%k [Number of signals process received]" ping howtoforge.com
>

この出力を生成しました:

ping howtoforge.com [Command details],    0 [Total memory usage],    0 [Number of signals process received]

timeコマンドのマニュアルページには、formatコマンドラインオプションに関連する詳細が含まれています。

結論

timeコマンドは、主にソフトウェア開発者とテスターに​​よって使用されます。ただし、自分がその1人でなくても、それを知っていても害はありません。いつ必要になるかわからないからです。このコマンドの詳細については、ツールのマニュアルページからアクセスできます。


Linux
  1. Linux yes初心者向けコマンドチュートリアル(例付き)

  2. 初心者向けのLinuxnprocコマンドチュートリアル(例付き)

  3. 初心者向けのLinuxsleepコマンドチュートリアル(例付き)

  1. Linuxは初心者向けのコマンドチュートリアルを展開します(例付き)

  2. 初心者向けのLinuxファクターコマンドチュートリアル(例付き)

  3. 初心者向けのLinuxbasenameコマンドチュートリアル(例付き)

  1. 初心者向けのLinuxtacコマンドチュートリアル(例付き)

  2. Linuxユーザー初心者向けコマンドチュートリアル(例付き)

  3. 初心者向けのLinuxsumコマンドチュートリアル(例付き)