Linux Time命令-统计命令的执行时间

Linux终端下执行命令可以极大的提高生产开发效率,但是当一个命令执行的时间过长或者我们需要诊断命令执行效率时,你该用哪个命令呢?这里你就必须要指导time命令的用法,它用于确定给定命令运行所需的时间。

它有助于测试脚本和命令的性能(即帮助查找shell脚本的执行时间或命令完成所需的时间)。

如何使用Linux time命令

要使用time命令,只需使用要作为输入运行的命令/程序执行time即可。请检查下面的示例

$ time ping linoxide.com

output
PING linoxide.com (104.27.115.15) 56(84) bytes of data.
64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=1 ttl=58 time=1.77 ms
64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=2 ttl=58 time=2.12 ms
64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=3 ttl=58 time=1.65 ms

--- linoxide.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10016ms
rtt min/avg/max/mdev = 1.118/1.476/2.124/0.362 ms

real    0m10.536s
user    0m0.002s
sys     0m0.007s

实数表示“ping”命令从执行到终止所用的挂钟时间,user和sys表示ping用户空间和内核空间所用的时间。

如何使time命令将其输出写入文件

要将时间命令输出写入文件而不是打印输出屏幕,请使用-o命令行选项,该选项需要文件名/路径作为输入。

$ /usr/bin/time -o /home/smart/time-output.txt ping linoxide.com
现在我们将在stdout上显示ping的输出,而time命令输出将写入文本文件。

注意:我们使用/usr/bin/time而不是time,因为shell内置的time命令不提供-o选项。

如何将其输出附加到现有文件

要将时间命令输出附加到现有文件而不是覆盖它,请使用-a命令行选项。

$ /usr/bin/time -a /home/smart/time-output.txt ping linoxide.com

如何获得linux time命令的详细输出

我们可以使用-v命令行选项生成详细的输出。

$ time -v ping linoxide.com

`output
Command being timed: "ping linoxide.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命令输出

There are a large number of formatting options as shown in the following list
有大量格式选项,如下表所示

C-使用的名称和命令行参数  
D—进程非共享数据区域的平均大小(以KB为单位)
E-时钟格式的已用时间  
F-页面错误数  
I-进程的文件系统输入数  
K-进程的平均总内存使用量(KB)  
M-最大驻留设置进程在生存期内的大小(以KB为单位)  
O-进程的文件系统输出数  
P—作业接收到的CPU百分比  
R-轻微或可恢复的页面错误数  
S—系统在内核模式下使用的CPU秒总数  
U-用户模式使用的CPU总秒数  
W—进程从主内存中交换的次数  
X-进程中共享文本的平均数量  
Z-系统的页面大小(以KB为单位)  
c—进程被上下文切换的次数  
e-进程使用的已用实时时间(秒)  
k-传递给过程的信号数量  
p—进程的平均非共享堆栈大小(以KB为单位)  
r—进程接收的套接字消息数  
s—进程发送的套接字消息数  
t-进程的平均驻留集大小(KB)  
w—进程自动切换上下文的时间数  
x-命令的退出状态

我们可以按如下方式使用格式化开关:

$ time -f "Elapsed Time = %E, Inputs %I, Outputs %O"
上述命令的输出如下所示:

Elapsed Time = 0:01:00, Inputs 2, Outputs 1

如果要添加新行作为格式字符串的一部分,请使用新行字符,如下所示:

$ time -f "Elapsed Time = %E \n Inputs %I \n Outputs %O"

Linux time命令版本

有三种时间命令版本:Bash、Zsh和Gnu-time命令。我们可以使用type命令来确定time是二进制还是内置关键字。

$ type time
   output
  # Bash
  time is a shell keyword

  # Zsh
  time is a reserved word

  # GNU time (sh)
  time is /usr/bin/time
linux df命令 - 查看磁盘空间大小
8个 Linux host命令示例详解
已有1个小伙伴在吐槽

发表我的评论

电子邮件地址不会被公开。 必填项已用*标注