如何在 Linux 中查找一个命令或进程的执行时间
在类Unix系统中,你可能知道一个命令或进程开始执行的时间,以及一个进程运行了多久。但是,你如何知道这个命令或进程何时结束或者它完成运行所花费的总时长呢?在类Unix系统中,这是非常容易的!有一个专门为此设计的程序名叫GNUtime。使用time程序,我们可以轻松地测量Linux操作系统中命令或程序的总执行时间。time命令在大多数Linux发行版中都有预装,所以你不必去安装它。
在Linux中查找一个命令或进程的执行时间
要测量一个命令或程序的执行时间,运行:
$/usr/bin/time-pls
或者,
$timels
输出样例:
dir1dir2file1file2mcelog real0m0.007s user0m0.001s sys0m0.004s $timels-a ..bash_logoutdir1file2mcelog.sudo_as_admin_successful ...bashrcdir2.gnupg.profile.wget-hsts .bash_history.cachefile1.local.stack real0m0.008s user0m0.001s sys0m0.005s
以上命令显示出了ls命令的总执行时间。你可以将ls替换为任何命令或进程,以查找总的执行时间。
输出详解:
- real——指的是命令或程序所花费的总时间
- user——指的是在用户模式下程序所花费的时间
- sys——指的是在内核模式下程序所花费的时间
我们也可以将命令限制为仅运行一段时间。参考如下教程了解更多细节:
在Linux中如何让一个命令运行特定的时长
time与/usr/bin/time
你可能注意到了,我们在上面的例子中使用了两个命令time和/usr/bin/time。所以,你可能会想知道他们的不同。
首先,让我们使用type命令看看time命令到底是什么。对于那些我们不了解的Linux命令,type命令用于查找相关命令的信息。更多详细信息,请参阅本指南。
$type-atime timeisashellkeyword timeis/usr/bin/time
正如你在上面的输出中看到的一样,time是两个东西:
- 一个是BASHshell中内建的关键字
- 一个是可执行文件,如/usr/bin/time
由于shell关键字的优先级高于可执行文件,当你没有给出完整路径只运行time命令时,你运行的是shell内建的命令。但是,当你运行/usr/bin/time时,你运行的是真正的GNUtime命令。因此,为了执行真正的命令你可能需要给出完整路径。
在大多数shell中如BASH、ZSH、CSH、KSH、TCSH等,内建的关键字time是可用的。time关键字的选项少于该可执行文件,你可以使用的唯一选项是-p。
你现在知道了如何使用time命令查找给定命令或进程的总执行时间。想进一步了解GNUtime工具吗?继续阅读吧!
关于GNUtime程序的简要介绍
GNUtime程序运行带有给定参数的命令或程序,并在命令完成后将系统资源使用情况汇总到标准输出。与time关键字不同,GNUtime程序不仅显示命令或进程的执行时间,还显示内存、I/O和IPC调用等其他资源。
time命令的语法是:
/usr/bin/time[options]command[arguments...]
上述语法中的options是指一组可以与time命令一起使用去执行特定功能的选项。下面给出了可用的选项:
- -f,–format——使用此选项可以根据需求指定输出格式。
- -p,–portability——使用简要的输出格式。
- -ofile,–output=FILE——将输出写到指定文件中而不是到标准输出。
- -a,–append——将输出追加到文件中而不是覆盖它。
- -v,–verbose——此选项显示time命令输出的详细信息。
- –quiet–此选项可以防止time命令报告程序的状态.
当不带任何选项使用GNUtime命令时,你将看到以下输出。
$/usr/bin/timewc/etc/hosts 928273/etc/hosts 0.00user0.00system0:00.00elapsed66%CPU(0avgtext+0avgdata2024maxresident)k 0inputs+0outputs(0major+73minor)pagefaults0swaps
如果你用shell关键字time运行相同的命令,输出会有一点儿不同:
$timewc/etc/hosts 928273/etc/hosts real0m0.006s user0m0.001s sys0m0.004s
有时,你可能希望将系统资源使用情况输出到文件中而不是终端上。为此,你可以使用-o选项,如下所示。
$/usr/bin/time-ofile.txtls dir1dir2file1file2file.txtmcelog
正如你看到的,time命令不会显示到终端上。因为我们将输出写到了file.txt的文件中。让我们看一下这个文件的内容:
$catfile.txt 0.00user0.00system0:00.00elapsed66%CPU(0avgtext+0avgdata2512maxresident)k 0inputs+0outputs(0major+106minor)pagefaults0swaps
当你使用-o选项时,如果你没有一个名为file.txt的文件,它会创建一个并把输出写进去。如果文件存在,它会覆盖文件原来的内容。
你可以使用-a选项将输出追加到文件后面,而不是覆盖它的内容。
$/usr/bin/time-afile.txtls
-f选项允许用户根据自己的喜好控制输出格式。比如说,以下命令的输出仅显示用户,系统和总时间。
$/usr/bin/time-f"\t%Ereal,\t%Uuser,\t%Ssys"ls dir1dir2file1file2mcelog 0:00.00real,0.00user,0.00sys
请注意shell中内建的time命令并不具有GNUtime程序的所有功能。
有关GNUtime程序的详细说明可以使用man命令来查看。
$mantime
想要了解有关Bash内建time关键字的更多信息,请运行:
$helptime
总结
以上所述是小编给大家介绍的在Linux中查找一个命令或进程的执行时间,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!