1.命令说明
功能及使用情况
用于测试命令执行时间的函数。可以直接在命令行使用,也可以写在Shell脚本的最后,用来统计脚本执行的时间。
real (实际时间):从command命令行开始执行到运行终止的消耗时间;
user(用户态使用时间):
sys(内核态使用时间,系统CPU时间):命令执行完成花费的系统CPU时间,即命令在核心态中执行时间的总和。
2.语法
time [command]
2.路径
a. time is a shell keyword
b. /usr/bin/time
(用type -a command命令可以查看某个命令的所有类型,这个time其实有两个)
默认使用的是shell keyword
3.参数
-p or --portability 单位变成s,显示出所花的秒数,不太直观,当然,如果用在时间耗费大的情况下,p还是很合适的。
格式显示为:
real %e
user %U
sys %s
-v or --verbose 显示成易识别的格式
-- version 显示版本信息
-f format 改成指定的格式输出
格式顺序:
1.参数-p的POSIX缺省时间格式;
2.环境变量TIMEFORMAT自定义的时间格式;
3.缺省的时间格式。
time命令缺省输出的时间格式同 TIMEFORMAT=$'nrealt%3lRnusert%3lUnsyst%3lS'
-o or --output=file 将结果定向到文件
=={ time find / -name a.txt; } 2>2.txt
==(time find / -name a.txt) 2>2.txt
4.举例说明
a.测试date命令的执行时间
# time date
Thu Mar 8 01:03:31 CST 2012
real 0m0.062s
user 0m0.004s
sys 0m0.000s
b.使用外部命令time来看看。
#/usr/bin/time find / -name "a.txt"
/home/baby/a.txt
/a.txt
0.52user 8.70system 0:24.42elapsed 37%CPU (0avgtext+0avgdata 6672maxresident)k
70720inputs+0outputs (1major+607minor)pagefaults 0swaps
很乱,使用-v参数,来查看,会更直观
#/usr/bin/time -v find / -name "a.txt"
/home/baby/a.txt
/a.txt
Command being timed: "find / -name a.txt"
User time (seconds): 0.24
System time (seconds): 1.11
Percent of CPU this job got: 63%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.15
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): 6672
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 4
Minor (reclaiming a frame) page faults: 605
Voluntary context switches: 227
Involuntary context switches: 47
Swaps: 0
File system inputs: 2272
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
c.不删除文件
# yes n | rm -i *.txt
d.对于执行test提示的东西输入no
# yes no | ./test
PS:
需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的
使用Find命令时,Real 远大于user+sys。这是由于在执行操作的时候,需要消耗大量的I/O操作,而磁盘I/O通常是最慢的环节,因此大部分时间find进程都在等待磁盘I/O完成。当第二次使用同样的命令时,real会减少很多,这是只于系统会将刚才操作过的一些文件缓存,而减少了磁盘I/O
(时间划分成时间片,程序在进程等待也是real时间大的原因之一)