linux time命令
在 Linux 系统中,time 命令的主要功能是测量指定命令执行过程中所消耗的时间以及系统资源的使用情况。
它能够显示如 CPU 使用时间、内存占用、输入输出操作等相关信息。需要注意的是,并非所有信息都能在 Linux 中正确呈现。这主要是由于 Linux 内部资源分配机制与 time 命令默认获取方式存在差异,导致部分数据无法被读取。
语法格式
<pre class="brush:php;toolbar:false">time [选项] 命令 [参数]
常用选项说明:
- -o 或 –output=文件名:将统计结果输出到指定文件。若文件已存在,则原内容会被覆盖。
- -a 或 –append:配合 -o 使用时,将结果追加写入文件末尾,而非覆盖原有内容。
- -f 格式 或 –format=格式:自定义结果显示格式。未指定时使用系统默认格式。可通过设置环境变量 TIME 来永久更改格式模板。
time 命令可展示四大类资源信息:
- 时间相关
- 内存使用
- 输入输出
- 命令信息
具体说明如下:
1、时间资源
E 整个命令执行耗时,格式为:[小时]:分钟:秒。注意此值不等于实际 CPU 运行时间。
e 命令执行总时间,单位为秒。同样不是真实 CPU 时间。
S 命令在内核态运行时间,单位秒。
U 命令在用户态运行时间,单位秒。
P CPU 占用率,即(内核态+用户态)时间总和除以总执行时间得出的百分比。
2、内存资源
M 执行期间物理内存使用的最大值,单位 KB
t 物理内存平均使用量,单位 KB
K 程序占用内存总量(堆栈+数据段+代码段)平均值,单位 KB
D 独占数据区平均大小,单位 KB
p 独占堆栈区平均大小,单位 KB
X 共享代码段平均大小,单位 KB
Z 系统页面大小,单位字节。同一系统中该值固定不变
3、IO资源
F 主缺页中断次数。指某内存页已被交换到交换分区并分配给其他进程,需要从交换分区重新读取的情况。
R 次缺页中断次数。表示内存页虽被换出但尚未分配给其他进程,此时内容未改变,无需从交换分区读取。
W 被换出到交换分区的次数
c 被强制中断(如CPU时间片用完)的次数
w 自愿中断次数(如等待磁盘读写完成)
I 输入文件数量
O 输出文件数量
r 接收的Socket消息数
s 发送的Socket消息数
k 接收到的信号数量
4、命令相关信息
C 执行命令及其参数详情
x 结束状态码 (Exit Status )
-p or –portability:自动设定显示格式为:
real %e user %Usys %S,确保符合 POSIX 标准。
-v or –verbose:列出所有可用资源信息,采用自然语言描述,适合刚接触该命令的用户。
使用示例
<pre class="brush:php;toolbar:false"> 1. # time date 2. Sun Mar 26 22:45:34 GMT-8 2006 3. 4. real 0m0.136s 5. user 0m0.010s 6. sys 0m0.070s 7. #
以上示例中,执行了 “time date” 命令(见第1行)。
系统先运行 date 命令,其输出结果如第2行所示。
第4至6行展示了时间统计信息:”real” 表示实际经过时间,”user” 是用户态CPU时间,”sys” 为内核态CPU时间。
这些时间值的显示格式统一为 MMmNN[.FFF]s。
使用以下命令:
<pre class="brush:php;toolbar:false">time -v ps -aux
可以同时查看 ps -aux 的执行结果及其资源消耗情况,如下所示:
<pre class="brush:php;toolbar:false"> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd] root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod] ...... root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux Command being timed: "ps -aux" User time (seconds): 0.05 System time (seconds): 0.06 Percent of CPU this job got: 68% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.16 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): 0 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 238 Minor (reclaiming a frame) page faults: 46 Voluntary context switches: 0 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