1 | time
|
2 | ===
|
3 |
|
4 | 统计给定命令所花费的总时间
|
5 |
|
6 | ## 补充说明
|
7 |
|
8 | **time命令** 用于统计给定命令所花费的总时间。
|
9 |
|
10 | ### 语法
|
11 |
|
12 | ```shell
|
13 | time(参数)
|
14 | ```
|
15 |
|
16 | ### 参数
|
17 |
|
18 | 指令:指定需要运行的额指令及其参数。
|
19 |
|
20 | ### 实例
|
21 |
|
22 | 当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短的。所有类UNIX系统都包含time命令,使用这个命令可以统计时间消耗。例如:
|
23 |
|
24 | ```shell
|
25 | [root@localhost ~]# time ls
|
26 | anaconda-ks.cfg install.log install.log.syslog satools text
|
27 |
|
28 | real 0m0.009s
|
29 | user 0m0.002s
|
30 | sys 0m0.007s
|
31 | ```
|
32 |
|
33 | 输出的信息分别显示了该命令所花费的real时间、user时间和sys时间。
|
34 |
|
35 | * real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。
|
36 | * user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。
|
37 | * sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。
|
38 |
|
39 | shell内建也有一个time命令,当运行time时候是调用的系统内建命令,因为系统内建的功能有限,所以需要时间其他功能需要使用time命令可执行二进制文件`/usr/bin/time`。
|
40 |
|
41 | 使用`-o`选项将执行时间写入到文件中:
|
42 |
|
43 | ```shell
|
44 | /usr/bin/time -o outfile.txt ls
|
45 | ```
|
46 |
|
47 | 使用`-a`选项追加信息:
|
48 |
|
49 | ```shell
|
50 | /usr/bin/time -a -o outfile.txt ls
|
51 | ```
|
52 |
|
53 | 使用`-f`选项格式化时间输出:
|
54 |
|
55 | ```shell
|
56 | /usr/bin/time -f "time: %U" ls
|
57 | ```
|
58 |
|
59 | `-f`选项后的参数:
|
60 |
|
61 | 参数 | 描述
|
62 | --- | ---
|
63 | `%E` | real时间,显示格式为[小时:]分钟:秒
|
64 | `%U` | user时间。
|
65 | `%S` | sys时间。
|
66 | `%C` | 进行计时的命令名称和命令行参数。
|
67 | `%D` | 进程非共享数据区域,以KB为单位。
|
68 | `%x` | 命令退出状态。
|
69 | `%k` | 进程接收到的信号数量。
|
70 | `%w` | 进程被交换出主存的次数。
|
71 | `%Z` | 系统的页面大小,这是一个系统常量,不用系统中常量值也不同。
|
72 | `%P` | 进程所获取的CPU时间百分百,这个值等于 `user+system` 时间除以总共的运行时间。
|
73 | `%K` | 进程的平均总内存使用量(data+stack+text),单位是 `KB`。
|
74 | `%w` | 进程主动进行上下文切换的次数,例如等待I/O操作完成。
|
75 | `%c` | 进程被迫进行上下文切换的次数(由于时间片到期)。
|
76 |
|