Linux/Unix:时间命令示例
时间:2020-01-09 10:46:06 来源:igfitidea点击:
如何使用Shell提示符显示在Linux或者类似Unix的操作系统上执行命令/脚本的时间?
您需要使用time命令显示在执行命令或者脚本期间经过的时间。
time命令在屏幕上(默认情况下,在标准错误输出中)显示以下有关所用资源的信息通过命令:
- 真实时间
- 用户时间
- 系统时间
语法
基本语法如下:
time command
或者
time command arg1 arg2 ... argN
或者
time [options]命令arg1 arg2 ... argN
注意:time命令也以不同的语法内置在BASH/KSH/CSH/TCSH中。
要在shell中运行time命令,请执行:
/usr/bin/time -p命令/usr/bin/time -p命令arg1 arg2
时间命令示例
要测量运行名为date的程序所需的时间,请执行:
$ time date
或者
$ /usr/bin/time -p date
如何将时间命令输出重定向到文件?
将时间命令信息的记录保存在名为output.time.txt的文件中,语法如下:
time date 2> output.time.txt /usr/bin/time -p date 2> output.time.txt
如果以上命令失败,请尝试以下操作以将time命令信息记录保存在文件中:
( time date ) 2> output.time.txt ## 或者 { time date ; } 2> output.time.txt
使用cat命令在屏幕上显示输出:
$ cat output.time.txt
关于GNU/Linux时间命令的说明
GNU/Linux用户可以使用以下语法将资源使用统计信息写入文件,而不是写入标准错误流:
$ /usr/bin/time -o output.time.txt -p date $ cat output.time.txt
传递-a选项将资源使用信息追加到输出文件,而不是覆盖它。
该选项仅在使用-o选项时有用:
$ /usr/bin/time -a -o output.time.txt -p sleep 2 $ cat output.time.txt
您可以使用-f FORMAT来控制时间命令输出格式,如下所示:
$ /usr/bin/time -f 'FORMAT' -p command
使用FORMAT作为控制时间输出的格式字符串,如下所示:
Fomat | 含义 |
---|---|
% | 字符%。 |
C | 正在计时的命令的名称和命令行参数。 |
D | 进程非共享数据区域的平均大小,以千字节为单位。 |
E | 进程使用的实际(挂钟)经过的时间,以[小时:]分钟:秒为单位。 |
F | 进程运行时发生的主要(或者需要I/O)页面错误的数量。这些是页面实际上已从主内存中迁移出来的错误。 |
I | 该进程输入的文件系统数。 |
K | 进程的平均总(数据+堆栈+文本)内存使用量,以千字节为单位。 |
M | 进程在其生存期内的最大驻留集大小,以千字节为单位。 |
O | 该进程输出的文件系统数。 |
P | 此作业获得的CPU百分比。这只是用户+系统时间除以总运行时间。它还会打印一个百分号。 |
R | 次要的或者可恢复的页面错误数。这些页面无效(因此会出错),但尚未被其他虚拟页面声明。因此,页面中的数据仍然有效,但是必须更新系统表。 |
S | 系统代表进程使用的CPU秒总数(在内核模式下),以秒为单位。 |
U | 进程(在用户模式下)直接使用的CPU秒总数,以秒为单位。 |
W | 从主内存中换出进程的次数。 |
X | 进程中共享文本的平均数量,以千字节为单位。 |
Z | 系统页面大小,以字节为单位。这是每个系统的常数,但在系统之间有所不同。 |
c | 进程被非自愿进行上下文切换的次数(因为时间片已过期)。 |
e | 进程使用的实际(挂钟)时间,以秒为单位。 |
k | 传递到进程的信号数。 |
p | 进程的未共享堆栈的平均大小,以千字节为单位。 |
r | 进程接收到的套接字消息的数量。 |
s | 进程发送的套接字消息数。 |
t | 进程的平均居民集大小,以千字节为单位。 |
w | 例如,在等待I/O操作完成时,程序自动进行上下文切换的次数。 |
x | 命令的退出状态。 |
在此示例中,使用格式选项仅显示用户,系统和总时间:
$ /usr/bin/time -f "%E real,%U user,%S sys" sleep 2 $ /usr/bin/time -f "%E real,%U user,%S sys" /path/to/script
输出示例:
0:02.00 real,0.00 user,0.00 sys