您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Linux命令运行时间该如何测试?

时间:2020-04-05 14:11:38  来源:  作者:

良许在工作中,写过一个 Shell 脚本,这个脚本可以从 4 个 NTP 服务器轮流获取时间,然后将最可靠的时间设置为系统时间。

因为我们对于时间的要求比较高,需要在短时间内就获取到正确的时间。所以我们就需要对这个脚本运行时间进行测试,看看从开始运行到正确设置时间需要花费多少时间。

其实在工作中,还有很多情况下需要测试一个脚本或者程序运行多少时间,特别是对于时间性要求比较高的系统更是如此。

对于时间的测试,我们可以用到一个命令:time 。下面我们就详细看看如何使用 time 命令来对脚本/命令进行测时。

1. time 命令基本用法

time 命令最基本的用法,就是 time + 命令 ,比如:

$ time ping baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=1 ttl=56 time=2.83 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=2 ttl=56 time=2.77 ms
…………
^C
--- baidu.com ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 10818ms
rtt min/avg/max/mdev = 2.765/2.808/2.862/0.039 ms

real    0m11.173s
user    0m0.004s
sys     0m0.002s

在结果里,real 表示从我们执行 ping 命令到最终按 ctrl+c 终止这段时间所耗费的时间;user 及 sys 分别表示 ping 命令在用户空间及内核空间所运行的时间。

2020 精选 阿里/腾讯等一线大厂 面试、简历、进阶、电子书 私信我「1024」免费获取

2. 将时间信息写入文件

如果我们想把时间信息直接写入到文件,而不是显示在屏幕上,那么我们可以使用 -o 选项,并指定写入的文件路径。

$ /usr/bin/time -o /home/alvin/time-output.txt ping baidu.com

执行这个命令后,ping 命令的输出结果依然会在终端里,而 time 命令的结果就写入到我们所指定的 time-output.txt 文件里。

-o 选项表示输出文件不存在就创建,如果存在的话就直接覆盖重写。如果我们不想覆盖重写,而是想追加在文件后面,我们可以使用 -a 选项。

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

3. 显示更详细的时间信息

time 命令不带选项的话,显示的信息量比较少,如果我们想获得更详细的信息,那么我们可以使用 -v 选项。

$ /usr/bin/time -v ping baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=1 ttl=56 time=2.75 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=2 ttl=56 time=2.76 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=3 ttl=56 time=2.85 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=4 ttl=56 time=2.77 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3300ms
rtt min/avg/max/mdev = 2.751/2.785/2.851/0.075 ms
        Command being timed: "ping baidu.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:03.64
        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): 2140
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 626
        Voluntary context switches: 10
        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

这个结果信息就相当详细了,我们可以获取到足够多我们所需要的信息。

2020 精选 阿里/腾讯等一线大厂 面试、简历、进阶、电子书 私信我「1024」免费获取

4. 自定义输出格式

默认情况下,time 命令只输出 real,usr,sys 三个内容,如果我们想要个性化一些,算定义它的输出格式,time 命令也是支持的。time 命令支持的格式有很多,如下所示:

C - Name and command line arguments used
D - Average size of the process's unshared data area in kilobytes
E - Elapsed time in a clock format
F - Number of page faults
I - Number of file system inputs by the process
K - Average total memory use of the process in kilobytes
M - Maximum resident set the size of the process during the lifetime in Kilobytes
O - Number of file system outputs by the process
P - Percentage of CPU that the job received
R - Number of minor or recoverable page faults
S - Total number of CPU seconds used by the system in kernel mode
U - Total number of CPU seconds used by user mode
W - Number of times the process was swApped out of main memory
X - Average amount of shared text in the process
Z - System's page size in kilobytes
c - Number of times the process was context-switched
e - Elapsed real time used by the process in seconds
k - Number of signals delivered to the process
p - Average unshared stack size of the process in kilobytes
r - Number of socket messages received by the process
s - Number of socket messages sent by the process
t - Average resident set size of the process in kilobytes
w - Number of time the process was context-switched voluntarily
x - Exit status of the command

如果我们想要输出以下这样的格式:

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

我们可以这样自定义:

$ /usr/bin/time -f "Elapsed Time = %E, Inputs %I, Outputs %O" ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=54 time=1.82 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=54 time=1.86 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 1.825/1.859/1.879/0.056 ms
Elapsed Time = 0:03.92, Inputs 0, Outputs 0

如果你想让输出的结果有换行,可以在对应的地方添加 n ,比如:

$ /usr/bin/time -f "Elapsed Time = %E n Inputs %I n Outputs %O" ping baidu.com

这样输出的结果就类似于这样:

Elapsed Time = 0:03.92
Inputs 0
Outputs 0


Tags:Linux命令   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1. ls — Listls会列举出当前工作目录的内容(文件或文件夹)。ls命令演示2.mkdir — Make Directorymkdir 用于新建一个新目录执行mkdir命令创建相应的文件夹3.pwd &...【详细内容】
2021-11-30  Tags: Linux命令  点击:(29)  评论:(0)  加入收藏
常见执行Linux命令的格式是这样的:命令名称 [命令参数] [命令对象]注意,命令名称、命令参数、命令对象之间请用空格键分隔。命令对象一般是指要处理的文件、目录、用户等资源,...【详细内容】
2021-10-21  Tags: Linux命令  点击:(57)  评论:(0)  加入收藏
今天,就整理了一下,在部署、部署后日志排错、端口占用等等方面的一些常用的linux命令。下面,咱们开始一.端口相关查看端口占用情况:lsof -i : 端口号例如:查询8080端口的运行情...【详细内容】
2021-02-02  Tags: Linux命令  点击:(205)  评论:(0)  加入收藏
有位小伙伴留言问道tee工具的代码在哪: 这篇文章我们就来简单分享一下。首先,我们需要了解Linux下的命令分为大致分为两类:内置命令与非内置命令。查看内置命令源码内置命令是S...【详细内容】
2021-01-28  Tags: Linux命令  点击:(241)  评论:(0)  加入收藏
一提到操作系统,我们首先想到的就是windows和Linux。Windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件。相比较Windows来说,Linux的很多管控都需要用...【详细内容】
2021-01-20  Tags: Linux命令  点击:(208)  评论:(0)  加入收藏
我决定把今年装x的机会,留给sar命令。它是一个Linux下的监控工具,一直站在鄙视链的顶端。之所以让人望而生畏,主要是由于它繁多的参数。但,这么强大的命令,并非无章可循,实际上是...【详细内容】
2021-01-12  Tags: Linux命令  点击:(216)  评论:(0)  加入收藏
文本编辑软件在任何操作系统上都是必备的软件。我们在 Linux 上不缺乏非常现代化的编辑软件,但是它们都是基于 GUI(图形界面)的编辑软件。正如你所了解的,Linux 真正的魅力在于...【详细内容】
2020-10-13  Tags: Linux命令  点击:(86)  评论:(0)  加入收藏
#命令预览1.top2.ps3.nice4.kill5.iostat6.mpstat7.vmstat8.df9.du10.netstat11.ss#首先我们先来了解一下什么是进程#进程:是Linux用来表示正在运行的程序的一种抽象概念,Linu...【详细内容】
2020-07-31  Tags: Linux命令  点击:(73)  评论:(0)  加入收藏
作为一名网络安全工作者,一说到渗透测试,所有人都会想到Kali Linux,Kali Linux系统是一款预装了许多渗透测试软件的Linux系统,是最常用的一款渗透测试系统工具,既然是一款Linux系...【详细内容】
2020-07-17  Tags: Linux命令  点击:(83)  评论:(0)  加入收藏
今天扣丁学堂给大家介绍一下关于一些Linux培训之常用Linux命令行使用技巧汇总,这些工具在几位回答者的日常工作中都很有用。对于任何不了解的命令,请使用“man“查看,或者使用G...【详细内容】
2020-06-30  Tags: Linux命令  点击:(62)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(14)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(22)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(25)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(40)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(28)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(19)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(29)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条