Linux查看命令运行时间

时间:2020-03-05 15:28:42  来源:igfitidea点击:

如果我们想成为一个很好的Linux管理员,因此我们应该知道"时间"命令。
它用于确定给定的命令运行多长时间。

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

如何使用Linux Time命令

要使用time命令,只需执行要作为输入运行的命令/程序时执行time
请签署以下例子

$time ping theitroad.com
output
PING theitroad.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
--- theitroad.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"命令从执行中取出的挂钟时间直到终止,"用户"和""SYS"("Ping")是"Ping"的时间,即用户空间和内核空间所花费的时间。

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

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

$/usr/bin/time -o /home/smart/time-output.txt ping theitroad.com

现在我们将在stdout上显示ping的输出,而time命令输出将被写入文本文件。

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

如何将其输出追加到存在的文件

要将时间命令输出追加到存在的文件而不是覆盖它,请使用"-a"命令行"选项。

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

如何获取Linux Time命令的详细输出

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

$time -v ping theitroad.com
output
    Command being timed: "ping theitroad.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

如何自定义时间命令输出

有大量格式选项,如下列表所示

C名称和命令行参数使用了D平均大小的进程的未共享数据区域以千字节的e在时钟格式中经过时间f页故障i文件系统的数量的文件系统输入的过程k平均总内存使用千字节的过程中的过程最大居民在千字节中的终身时间内设置过程的大小,以千字节为o文件系统输出的次数PU的CPU的P百分比,所接收的作业收到的次要或者可恢复页面错误的CPU秒数在内核中使用的CPU秒总数模式U用户模式使用的CPU秒总数W次数将进程从主存储器X出错的次数X系统z系统的页面大小中的共享文本的平均数量在千字节的C次数中,该过程的上下文切换的次数实时使用的过程以秒为单位k次数,传递到进程p平均未共享堆栈大小以千字节的套接字r次的套接字消息CESS S的套接字消息由过程T平均居民集规定的进程中的千字节次数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时间命令版本

有三次命令版本,bash,zsh和gnu time命令。
我们可以使用type命令来确定时间是否是二进制或者内置关键字。

$type time
output
  # Bash
  time is a shell keyword
  # Zsh
  time is a reserved word
  # GNU time (sh)
  time is /usr/bin/time