当前位置: 首页 > 科技观察

如何在Linux中查找命令或进程的执行时间

时间:2023-03-15 00:12:54 科技观察

在类Unix系统中,您可能知道命令或进程何时开始执行,以及进程运行了多长时间。但是您如何知道命令或进程何时结束或完成运行所花费的总时间?在类Unix系统上,这很容易!有一个名为GNUtime的程序就是为此而设计的。使用时间程序,我们可以很方便地测算出Linux操作系统中一条命令或程序的总执行时间。大多数Linux发行版中都预装了time命令,因此您不必安装它。在Linux中查找命令或进程的执行时间要测量命令或程序的执行时间,请运行:$/usr/bin/time-pls或$timels示例输出:dir1dir2file1file2mcelogreal0m0.007suser0m0.001ssys0m0.004s$时间ls-a。.bash_logoutdir1file2mcelog.sudo_as_admin_successful...bashrcdir2.gnupg.profile.wget-hsts.bash_history.cachefile1.syslocal.stackreal0m0.008suser10m0.05上面的命令显示了ls命令的总执行时间。您可以将ls替换为任何命令或进程以查找总执行时间。详细输出:real-指命令或程序耗费的总时间user-指程序在用户态耗费的时间sys-指程序在内核态耗费的时间我们也可以限制命令只运行在一段时间内。详情请参考以下教程:如何在Linuxtime和/usr/bin/time中让命令在特定时间运行您可能已经注意到,我们在上面的示例中使用了两个命令time和/usr/bin/time时间。因此,您可能想知道它们有何不同。首先,让我们使用type命令看看time命令到底是什么。对于那些我们不知道的Linux命令,使用type命令来查找相关命令的信息。有关详细信息,请参阅本指南。$type-atimetimeisashellkeywordtimeis/usr/bin/time正如你在上面的输出中看到的,time是两个东西:一个内置在BASHshell中的关键字和一个可执行文件,例如/usr/bin/time优先级高于可执行文件,因为shell关键字,当你只运行time命令而不给出完整路径时,你运行的是shell的内置命令。但是,当您运行/usr/bin/time时,您正在运行真正的GNUtime命令。因此,您可能需要提供完整路径才能执行实际命令。在BASH、ZSH、CSH、KSH、TCSH等大多数shell中,内置关键字time是可用的。time关键字的选项少于此可执行文件,您可以使用的唯一选项是-p。您现在知道如何使用time命令来查找给定命令或进程的总执行时间。想了解更多有关GNU时间工具的信息吗?继续阅读!GNU时间程序简介GNU时间程序运行带有给定参数的命令或程序,并在命令完成后将系统资源使用情况汇总到标准输出。与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/hosts928273/etc/hosts0.00user0.00system0:00.00elapsed66%CPU(0avgtext+0avgdata2024maxresident)k0inputs+0outputs(0major+73minor)pagefaults0swaps如果你使用shellkey使用time运行相同的命令,输出会有些不同:$timewc/etc/hosts928273/etc/hostsreal0m0.006suser0m0.001ssys0m0.004s有时,您可能希望将系统资源使用情况输出到文件而不是在终端上。为此,您可以使用-o选项,如下所示。$/usr/bin/time-ofile.txtlsdir1dir2file1file2file.txtmcelog如您所见,时间命令不会显示到终端。因为我们将输出写入文件file.txt。我们看一下这个文件的内容:$catfile.txt0.00user0.00system0:00.00elapsed66%CPU(0avgtext+0avgdata2512maxresident)k0inputs+0outputs(0major+106minor)pagefaults0swaps使用-o选项时,如果您没有名为file.txt的文件,它将创建一个并将输出写入其中。如果文件存在,它将覆盖文件的原始内容。您可以使用-a选项将输出附加到文件而不是覆盖其内容。$/usr/bin/time-afile.txtls-f选项允许用户根据自己的喜好控制输出格式。比如说,以下命令的输出只显示用户、系统和总时间。$/usr/bin/time-f"\t%Ereal,\t%Uuser,\t%Ssys"lsdir1dir2file1file2mcelog0:00.00real,0.00user,0.00sys请注意内置shell命令中的时间不具备GNU时间程序的所有功能。可以使用man命令查看GNU时间程序的详细描述。$mantime有关Bash的内置时间关键字的更多信息,请运行:$helptime就是这样。希望对你有帮助。