Linux 的 time 命令是用来计算一个命令的执行时间的。它会返回命令的执行时间以及用户CPU时间、系统CPU时间、子进程CPU时间等统计信息。下面是time命令的用法和实例:
time命令用法
time [options] command [argument...]
time命令选项
- -f FORMAT, --format=FORMAT:自定义输出格式,可用的占位符见下文
- -o FILE, --output=FILE:将结果写入文件,而不是输出到终端
- -p:使用POSIX标准格式输出结果
- -v:使用verbose模式输出结果
time命令占位符
- %E:命令的执行时长(例:"0:00.01")
- %U:用户CPU时间(例:"0.00s")
- %S:系统CPU时间(例:"0.00s")
- %P:命令的CPU利用率(例:"1%")
- %M:最大内存使用情况(单位:KB)
- %W:退出状态草丛(类似于命令返回值)
time命令实例
实例1:计算命令执行时间
我们经常需要知道一些命令的执行时间以及资源占用情况。通过time命令,我们可以轻松地获取到这些信息。
time ping -c 5 www.baidu.com
输出结果如下:
PING www.baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148: icmp_seq=1 ttl=51 time=11.7 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=51 time=10.0 ms
64 bytes from 220.181.38.148: icmp_seq=3 ttl=51 time=10.1 ms
64 bytes from 220.181.38.148: icmp_seq=4 ttl=51 time=10.0 ms
64 bytes from 220.181.38.148: icmp_seq=5 ttl=51 time=10.2 ms
--- www.baidu.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4009ms
rtt min/avg/max/mdev = 10.026/10.422/11.718/0.707 ms
real 0m4.131s
user 0m0.000s
sys 0m0.000s
输出结果中的real、user和sys各表示命令执行的总时间、用户CPU时间和系统CPU时间。在这个示例中,我们得到的结果是“real 0m4.131s”,它表示ping 命令执行了4.131秒。我们也可以利用-f选项自定义输出格式,比如:
time -f "real %e seconds. user %U seconds. sys %S seconds." ping -c 5 www.baidu.com
输出结果如下:
PING www.baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148: icmp_seq=1 ttl=51 time=10.9 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=51 time=10.0 ms
64 bytes from 220.181.38.148: icmp_seq=3 ttl=51 time=10.1 ms
64 bytes from 220.181.38.148: icmp_seq=4 ttl=51 time=10.0 ms
64 bytes from 220.181.38.148: icmp_seq=5 ttl=51 time=10.1 ms
--- www.baidu.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 10.007/10.244/10.895/0.346 ms
real 4.014 seconds. user 0.001 seconds. sys 0.003 seconds.
在这个示例中,我们定义了一个输出格式,它包含了命令执行时间、用户CPU时间和系统CPU时间的信息。
实例2:比较两个命令的执行时间
我们经常需要比较两个命令的执行时间,用time命令可以轻松地实现这个需求。比如,我们希望知道一个简单的命令逆袭执行的时间和系统复制命令执行的时间哪个更短,可以这样做:
time seq 1000 | sort > /dev/null
输出结果如下:
real 0m0.003s
user 0m0.000s
sys 0m0.004s
其中real、user和sys各表示命令执行的总时间、用户CPU时间和系统CPU时间。这个命令使用了管道符,将seq命令的输出传递给sort命令,并将sort命令的输出传递给/dev/null,从而去除所有的输出。我们也可以使用-f选项自定义输出格式,比如:
time -f "real %e seconds. user %U seconds. sys %S seconds." cp -r /usr/lib /tmp
输出结果如下:
real 3.601 seconds. user 0.418 seconds. sys 2.692 seconds.
在这个示例中,我们使用cp命令将/usr/lib目录复制到了/tmp目录,并利用-f选项自定义了输出格式,得到了命令执行时间、用户CPU时间和系统CPU时间的信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux time命令 - Python技术站