Linux shell编程学习笔记83:time命令——争分夺秒

紫郢剑侠 2024-10-02 17:07:03 阅读 58

0 引言

在DOS或Windows中,我们可以使用time命令来查看或修改系统时间。

但是在Linux中,time命令的功能却与DOS或Windows迥然不同。

1 time命令 的功能、帮助信息、命令格式和参数说明

1.1 time命令 的功能

在Linux,time命令的功能是测量特定指令执行时所需消耗的时间及系统资源等信息,例如 CPU 时间、内存、输入输出等等。

time命令对于测试我们自己编写的脚本和命令的性能非常有用。

例如,如果我们为做同样的工作,分别编写了两个不同的脚本,想知道哪一个表现得更好,那么就可以使用time命令来确定每个脚本的执行时间。

然而,需要特别注意的是,因为在不同版本的 Linux 上,部分资源的分配函数与 time 命令所预设的方式并不相同,这会导 time 命令无法取得这些资料的相关信息。

1.2 time命令的帮助信息

我们使用-h、--help、-?或--?均无法获得time命令的帮助信息。

<code>[purpleendurer @ bash ~ ] time -h

bash: -h: command not found

real 0m0.001s

user 0m0.001s

sys 0m0.000s

[purpleendurer @ bash ~ ] time --help

bash: --help: command not found

real 0m0.001s

user 0m0.001s

sys 0m0.000s

[purpleendurer @ bash ~ ] time -?

bash: -?: command not found

real 0m0.001s

user 0m0.001s

sys 0m0.000s

[purpleendurer @ bash ~ ] time --?

bash: --?: command not found

real 0m0.001s

user 0m0.000s

sys 0m0.000s

[purpleendurer @ bash ~ ]

这样一来,我们只能通过man time命令来获取帮助信息了。

1.3 time命令的命令格式

time [命令]

1.4 time命令的参数说明

命令:需要测试运行时间的命令及其参数。

2 time命令运用实例

当我们在不同的shell上运行time命令,返回的信息不尽相同。

2.1 在bash上运行

<code>[purpleendurer @ bash ~ ] time

real 0m0.000s

user 0m0.000s

sys 0m0.000s

[purpleendurer @ bash ~ ] time ls

Code

real 0m0.001s

user 0m0.000s

sys 0m0.001s

[purpleendurer @ bash ~ ] time ls -a

. .. .bash_logout .bash_profile .bashrc .cache Code .local .oh-my-zsh .pip .zcompdump-edu-5.0.2 .zsh_history .zshrc

real 0m0.001s

user 0m0.001s

sys 0m0.000s

[purpleendurer @ bash ~ ]

2.2 在zsh上运行

<code>[purpleendurer @ zsh \w ] time

shell 0.03s user 0.01s system 0% cpu 6:32.84 total

children 0.03s user 0.02s system 0% cpu 6:32.84 total

[purpleendurer @ zsh \w ] time ls

Code

ls --color=tty 0.00s user 0.00s system 86% cpu 0.002 total

[purpleendurer @ zsh \w ] time ls -a

. .. .bash_history .bash_logout .bash_profile .bashrc .cache Code .local .oh-my-zsh .pip .zcompdump-edu-5.0.2 .zsh_history .zshrc

ls --color=tty -a 0.00s user 0.00s system 82% cpu 0.002 total

[purpleendurer @ zsh \w ]

2.3 在sh上运行

<code>[purpleendurer @ sh ~ ] ls

Code

[purpleendurer @ sh ~ ] time

user 0m0.00s

sys 0m0.00s

[purpleendurer @ sh ~ ] time ls

Code

real 0m0.001s

user 0m0.000s

sys 0m0.001s

[purpleendurer @ sh ~ ] time ls -a

. .. .bash_history .bash_logout .bash_profile .bashrc .cache Code .local .oh-my-zsh .pip .zcompdump-edu-5.0.2 .zsh_history .zshrc

real 0m0.001s

user 0m0.001s

sys 0m0.000s

[purpleendurer @ sh ~ ]

可以看到,time命令在bash、zsh和sh中执行后反馈的信息各有不同,但基本包括了以下三项信息:

real 或 total 或 elapsed(wall clock time,挂钟时间):命令从开始执行到结束的时间。也就是从你按下回车键的那一刻开始,到命令完成的那一刻为止的时间。这段时间包括其他进程所占用的时间片(time slice)以及进程被阻塞时所花费的时间(例如,为等待IO操作完成所用的时间)。user :命令进程在内核之外的用户模式(user mode)下花费的CPU时间。这是唯一真正用于执行命令进程所花费的时间。执行其他命令进程以及花费在阻塞状态中的时间并没有计算在内。system 或 sys :命令进程在内核模式下花费的CPU时间。它代表在内核中执行系统调用所使用的时间,这和库代码(library code)不同,库代码(library code)仍旧运行在用户空间(user space)。与“user” 时间类似,这也是真正由命令进程使用的CPU时间。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。