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