这篇文章主要讲解了“怎么在Linux中查找一个命令或进程的执行时间”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Linux中查找一个命令或进程的执行时间”吧!
要测量一个命令或程序的执行时间,运行:
$ /usr/bin/time -p ls
或者,
$ time ls
输出样例:
dir1 dir2 file1 file2 mcelog real 0m0.007suser 0m0.001ssys 0m0.004s
$ time ls -a. .bash_logout dir1 file2 mcelog .sudo_as_admin_successful.. .bashrc dir2 .gnupg .profile .wget-hsts.bash_history .cache file1 .local .stack real 0m0.008suser 0m0.001ssys 0m0.005s
以上命令显示出了 ls
命令的总执行时间。 你可以将 ls
替换为任何命令或进程,以查找总的执行时间。
输出详解:
鸿蒙官方战略合作共建——HarmonyOS技术社区
real
—— 指的是命令或程序所花费的总时间
user
—— 指的是在用户模式下程序所花费的时间
sys
—— 指的是在内核模式下程序所花费的时间
我们也可以将命令限制为仅运行一段时间。参考如下教程了解更多细节:
在 Linux 中如何让一个命令运行特定的时长
你可能注意到了, 我们在上面的例子中使用了两个命令 time
和 /usr/bin/time
。 所以,你可能会想知道他们的不同。
首先, 让我们使用 type
命令看看 time
命令到底是什么。对于那些我们不了解的 Linux 命令,type
命令用于查找相关命令的信息。 更多详细信息,请参阅本指南。
$ type -a timetime is a shell keywordtime is /usr/bin/time
正如你在上面的输出中看到的一样,time
是两个东西:
一个是 BASH shell 中内建的关键字
一个是可执行文件,如 /usr/bin/time
由于 shell 关键字的优先级高于可执行文件,当你没有给出完整路径只运行 time
命令时,你运行的是 shell 内建的命令。 但是,当你运行 /usr/bin/time
时,你运行的是真正的 GNU time 命令。 因此,为了执行真正的命令你可能需要给出完整路径。
在大多数 shell 中如 BASH、ZSH、CSH、KSH、TCSH 等,内建的关键字 time
是可用的。 time
关键字的选项少于该可执行文件,你可以使用的唯一选项是 -p
。
你现在知道了如何使用 time
命令查找给定命令或进程的总执行时间。 想进一步了解 GNU time 工具吗? 继续阅读吧!
GNU time 程序运行带有给定参数的命令或程序,并在命令完成后将系统资源使用情况汇总到标准输出。 与 time
关键字不同,GNU time 程序不仅显示命令或进程的执行时间,还显示内存、I/O 和 IPC 调用等其他资源。
time
命令的语法是:
/usr/bin/time [options] command [arguments...]
上述语法中的 options
是指一组可以与 time
命令一起使用去执行特定功能的选项。 下面给出了可用的选项:
-f, –format
—— 使用此选项可以根据需求指定输出格式。
-p, –portability
—— 使用简要的输出格式。
-o file, –output=FILE
—— 将输出写到指定文件中而不是到标准输出。
-a, –append
—— 将输出追加到文件中而不是覆盖它。
-v, –verbose
—— 此选项显示 time
命令输出的详细信息。
–quiet
– 此选项可以防止 time
命令报告程序的状态.
当不带任何选项使用 GNU time 命令时,你将看到以下输出。
$ /usr/bin/time wc /etc/hosts9 28 273 /etc/hosts0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k0inputs+0outputs (0major+73minor)pagefaults 0swaps
如果你用 shell 关键字 time
运行相同的命令, 输出会有一点儿不同:
$ time wc /etc/hosts9 28 273 /etc/hosts real 0m0.006suser 0m0.001ssys 0m0.004s
有时,你可能希望将系统资源使用情况输出到文件中而不是终端上。 为此, 你可以使用 -o
选项,如下所示。
$ /usr/bin/time -o file.txt lsdir1 dir2 file1 file2 file.txt mcelog
正如你看到的,time
命令不会显示到终端上。因为我们将输出写到了file.txt
的文件中。 让我们看一下这个文件的内容:
$ cat file.txt0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2512maxresident)k0inputs+0outputs (0major+106minor)pagefaults 0swaps
当你使用 -o
选项时, 如果你没有一个名为 file.txt
的文件,它会创建一个并把输出写进去。如果文件存在,它会覆盖文件原来的内容。
你可以使用 -a
选项将输出追加到文件后面,而不是覆盖它的内容。
$ /usr/bin/time -a file.txt ls
-f
选项允许用户根据自己的喜好控制输出格式。 比如说,以下命令的输出仅显示用户,系统和总时间。
$ /usr/bin/time -f "\t%E real,\t%U user,\t%S sys" lsdir1 dir2 file1 file2 mcelog0:00.00 real, 0.00 user, 0.00 sys
请注意 shell 中内建的 time
命令并不具有 GNU time 程序的所有功能。
有关 GNU time 程序的详细说明可以使用 man
命令来查看。
$ man time
想要了解有关 Bash 内建 time
关键字的更多信息,请运行:
$ help time
感谢各位的阅读,以上就是“怎么在Linux中查找一个命令或进程的执行时间”的内容了,经过本文的学习后,相信大家对怎么在Linux中查找一个命令或进程的执行时间这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。