介绍
有时你会想知道执行命令或脚本需要多长时间。你可以跟踪开始和结束时间并计算差异以获得持续时间。你甚至可以抓住你的可靠的停机手表应用程序并以这种方式跟踪事物。
命令行充满了一堆小,单一的实用工具,可以帮助消除需要自己写任何额外的代码的需求。时间命令是这样的命令之一。时间命令与日期命令无关,它提供了系统的日期和时间。
在本教程中,您将使用时间命令并探索其输出。
本教程中的示例(除非另有说明)将使用在Linux上的Bash壳中嵌入的时间。
步骤 1 - 执行命令的时间
要定时执行命令的持续时间,您将命令前缀为时间。
然而,你如何执行时间取决于你的操作系统。时间既存在于某些壳的内置命令中,如bash和zsh,还有一个独立的命令,称为GNU时间,它具有与时间内置的不同论点。
使用以下命令查看时间在您的系统上是如何工作的:
1type -a time
你会看到输出如下:
1[secondary_label Output]
2time is a shell keyword
3time is /usr/bin/time
在这种情况下,有一个内置的壳命令称为时间,一个版本的时间安装在/usr/bin/time。
如果你想使用时间的GNU版本,你可以先用一个背影来标注它:
1\time
如果您没有,您的壳将使用其内置版本。
<$>[注]
注:fish壳没有提供它自己的time实现。如果你使用fish的话,你会想确保安装了GNUtime命令。
这两种方法都有相同的用途,尽管GNU版本具有更先进的格式化选项。
让我们通过在您的文件系统的根/上使用树命令来探索程序执行的时间,该命令将列出您的所有文件和目录的视觉树。
「樹」命令並不總是默認安裝在許多系統上,但你可以用「apt」安裝在 Ubuntu 和 Debian 系統上:
1sudo apt install tree
在 macOS 上,您可以使用 Homebrew安装树:
1brew install tree
现在安装了树命令,使用它来查看系统上的所有文件,但先键入时间,以查看需要多长时间:
1time tree /
最终,它会停止并为您提供所需的时间:
1[secondary_label Output]
2# The output of tree will scroll by here.
3
4166590 directories, 1568127 files
5tree / 12.24s user 10.37s system 66% cpu 33.827 total
注意您执行的命令树 / 也被时间命令回响了,输出显示了一些信息,但目前,专注于总数和之前的数字:
1[secondary_label Output]
2tree / 12.24s user 10.37s system 66% cpu 33.827 total
这就是命令在几秒钟内执行所需的时间。
如果您要再次运行时间树/并快速按CTRL+C,则树命令将停止滚动,您将收到执行命令停止之前的时间的时间结果。
步骤二:了解资源使用
从时间的输出包括三个值,除了总持续时间。
1[secondary_label Output]
2tree / 12.24s user 10.37s system 66% cpu 33.827 total
第一个是命令在用户模式中花费的总时间(以CPU秒),这是用户之后的值。
其次是系统,是指命令在系统或内核模式中花费的时间量(再一次,在CPU秒)。
最后,分配给命令的CPU的百分比,用cpu来补充。
用户和系统时间的区别在于,CPU使用率是通过访问级别进行分割的。当代码在用户模式下执行时,它没有直接访问硬件或参考内存,必须依赖系统的API进行分配。
另一方面,内核模式是当代码被执行时对系统硬件有无限制的访问权限时,这种模式几乎是用于操作系统中最值得信赖的功能的。
结论
在本教程中,您探索了如何使用时间命令来查看命令和脚本需要多长时间运行,以及该时间在哪里。