手机版 收藏 导航

Linux 如何查看命令执行的时间

原创   www.link114.cn   2024-07-18 21:10:48

Linux 如何查看命令执行的时间

Linux 内置一个名为 time 的命令,它可以用来测量命令的执行时间。使用 time 命令非常简单,只需要在要测量的命令前面加上 time 关键字即可。例如,我们想测量 ls 命令的执行时间,可以运行以下命令:

time ls

执行完毕后,我们会看到类似如下的输出信息:

real    0m0.002s
user    0m0.000s
sys     0m0.002s

这个输出包含三个指标:

  • real: 从命令开始执行到结束的总时间,包括命令本身的执行时间和等待时间。
  • user: 命令在用户模式下的 CPU 执行时间。
  • sys: 命令在内核模式下的 CPU 执行时间。

通过这三个指标,我们可以了解命令的整体执行时间以及在用户模式和内核模式下的执行时间。

除直接在命令前加 time 关键字,我们还可以通过手动调用 time 命令来测量命令的执行时间。这种方式更加灵活,可以用于需要更复杂的输出格式或者需要测量多个命令的场景。

例如,我们想测量 ls 命令的执行时间并将结果保存到一个文件中,可以运行以下命令:

/usr/bin/time -o time_result.txt ls

这里我们使用 /usr/bin/time 命令,并通过 -o 参数指定输出文件的路径。执行完成后,我们可以查看 time_result.txt 文件中的内容,其内容与前面直接使用 time 命令的输出相同。

除输出到文件,我们还可以通过 -f 参数自定义输出格式。例如,我们想输出命令名称、实际执行时间和用户 CPU 时间,可以使用以下命令:

/usr/bin/time -f "%C\nReal time: %e s\nUser time: %U s" ls

这样,我们就可以得到如下格式的输出:

ls
Real time: 0.002 s
User time: 0.000 s

除使用 time 命令,Linux 系统还提供其他一些方法来测量命令的执行时间。

使用 Bash 内置的 TIMEFORMAT 变量

Bash shell 提供一个名为 TIMEFORMAT 的内置变量,可以用于自定义 time 命令的输出格式。例如,我们可以设置 TIMEFORMAT 变量来只显示实际执行时间:

TIMEFORMAT=%E
time ls

这样,我们就只会看到类似 0.002s 的输出,而不会看到用户 CPU 时间和系统 CPU 时间。

使用 strace 命令

strace 命令是一个强大的系统调用跟踪工具,它不仅可以输出命令的执行情况,还可以统计命令的执行时间。例如,我们可以使用以下命令来测量 ls 命令的执行时间:

strace -tT ls

输出结果如下:

19:20:45.123456 execve("/usr/bin/ls", ["ls"], 0x7ffee6315090 /* 23 vars */) = 0 <0.000203>
19:20:45.123659 open("/etc", O_RDONLY|O_CLOEXEC) = 3 <0.000032>
19:20:45.123691 close(3)                = 0 <0.000008>
19:20:45.123699 stat("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000035>
19:20:45.123734 write(1, "bin\tdoc\tetc\tinclude\tlib\tlib64"..., 4096) = 4096 <0.000090>
19:20:45.123824 close(1)                = 0 <0.000009>
19:20:45.123833 close(2)                = 0 <0.000008>
19:20:45.123841 exit_group(0)           = ?

其中,<0.000203> 表示 execve 系统调用的执行时间为 0.000203 秒。通过分析这些系统调用的执行时间,我们可以了解命令的整体执行情况。

Linux 系统提供多种方式来测量命令的执行时间,包括使用内置的 time 命令、调用 time 命令以及使用 Bash 的内置变量和 strace 命令等。通过这些方法,我们可以了解命令的整体执行时间以及在用户模式和内核模式下的执行时间,从而更好地优化系统性能和诊断问题。选择合适的方式取决于具体的需求,比如是否需要自定义输出格式或者需要更细致的系统调用跟踪信息。无论使用哪种方式,学会测量命令执行时间都是一项非常实用的 Linux 技能。