負荷の高いUbuntuシステムで実行し、nice -n 19 time echo
次の出力を取得します。
0.00user 0.00system 0:02.80elapsed 0%CPU (0avgtext+0avgdata 1732maxresident)k
312inputs+0outputs (1major+74minor)pagefaults 0swaps
ただし、実行すると、time echo
次のような結果が表示されます。
real 0m0.000s
user 0m0.000s
sys 0m0.000s
さらに奇妙なことは、私が走ると次のような結果がnice -n 19 time time
出るということです。
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
[--portability] [--format=format] [--output=file] [--version]
[--quiet] [--help] command [arg...]
Command exited with non-zero status 1
0.00user 0.00system 0:03.29elapsed 0%CPU (0avgtext+0avgdata 1344maxresident)k
0inputs+0outputs (0major+67minor)pagefaults 0swaps
ただし、実行すると、time time
次のような結果が表示されます。
real 0m0.000s
user 0m0.000s
sys 0m0.000s
time
これを実行すると、なぜ他の結果が出るのですかnice
?最初はより高い値を生成すると思いましたが(たとえば、実際の値は0.000秒ではありません)、コマンドがコマンドをnice
変更したようです。time
答え1
簡単に言うと:type
コマンドがシェル組み込みコマンドであることを確認するために使用されます。 bashのtime
intime xyz
と/usr/bin/time
inを使用していますnice time xyz
。
type <command>
シェルが何を使用しているかを調べるには、次の手順を実行します。
$ type time
time is a shell keyword
Inはbash
time
シェルキーワードです。これはtime
コマンドではありません(で見つけることができますwhich time
)。 Bashの多くのコマンドには、echo
などtest
の組み込みシェルキーワードがありますpwd
。
$ type echo test pwd nice time
echo is a shell builtin
test is a shell builtin
pwd is a shell builtin
nice is /usr/bin/nice
time is a shell keyword
man
この場合、誤った文書が返されます。help
シェルコマンドが必要です。
$ help time
time: time [-p] pipeline
Report time consumed by pipeline's execution.
Execute PIPELINE and print a summary of the real time, user CPU time,
and system CPU time spent executing PIPELINE when it terminates.
Options:
-p print the timing summary in the portable Posix format
The value of the TIMEFORMAT variable is used as the output format.
Exit Status:
The return status is the return status of PIPELINE.
time
ところで、マニュアルには次のヒントが含まれています。
$人の時間 TIME(1) 一般コマンドマニュアル TIME(1) 名前 プログラムを定期的に実行し、システムリソース使用量を要約します。 要約 時間 [ -apqvV ] [ -f 形式 ] [ -o ファイル ] [ --append ] [ --verbose ] [ --quiet ] [ --portability ] [ --format=FORMAT ] [ --output=FILE ] [ --version ] [ --help ] コマンド [ ARGS ] 説明する 与えられた引数ARGを使用してCOMMANDプログラムを実行する時間。 COMMAND が完了すると、時刻に次の情報が表示されます。 COMMANDが使用するリソース(標準エラー出力から次のように) 基本)。 COMMANDがゼロ以外の状態で終了した場合の時間を表示します。 警告メッセージと終了ステータス。 ... はい ... Bashシェルユーザーは明示的なパスを使用する必要があります。 組み込みシェルの代わりに外部時間コマンドを実行する 変形。 /usr/binに時間がインストールされているシステムでは 最初の例は次のとおりです。 /usr/bin/time トイレ /etc/hosts
引用:
man 1 time
info bash time
またはman 1 bash
「SHELL GRAMMAR」の「PIPELINE」セクション- Linuxのコマンドライン、43-46ページ。
答え2
2 つのtime
コマンドを使用できます。 1つはシェルに組み込まれ、もう1つはファイルシステムの実行可能ファイルです。見つかったとおり、出力形式が異なります。nice
シェルに埋め込まれたアイテムは実行できないため、他のアイテムを実行します。
答え3
走る
time nice command ...
使用time
シェルに内蔵。
time
または、全体的なクールなパイプライン(シェルに組み込むことが重要)の時間を測定するには、次の手順を実行する必要があります。
time nice bash -c 'some cmd... | other cmd...'
nice
パイプライン全体に適用可能にします。