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命令的帮助信息。
[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上运行
[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上运行
[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上运行
[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时间。