Linux系统拓展——如何查找命令执行时间

目录

一、使用时间命令

二、使用Bash内置变量

三、使用Perf工具

四、使用GNU time工具

五、使用Strace工具

六、补充


在 Linux 操作系统中,查找命令的执行时间对于优化系统性能、调试程序以及评估脚本效率至关重要。

一、使用时间命令

时间命令(time)是一个内置的 shell 命令,用于测量其他命令或程序的执行时间。它的使用非常简单,只需在要执行的命令之前加上 time 即可。

[root@master ~]#time ls
anaconda-ks.cfg       main.py                    公共  图片  音乐
data.json             redis-5.0.7.tar.gz         模板  文档  桌面
initial-setup-ks.cfg  webmin-2.100-1.noarch.rpm  视频  下载

real	0m0.002s
user	0m0.000s
sys	0m0.002s
字段含义
real实际时间,即从命令开始执行到完成所花费的时间。
user用户 CPU 时间,即 CPU 执行用户程序的时间。
sys系统 CPU 时间,即 CPU 执行内核程序的时间。

这些时间的单位通常是秒(s),但如果时间较长,也可能显示为分钟(m)和小时(h)。

二、使用Bash内置变量

Bash shell 提供了一个内置的变量 $SECONDS,它可以用来测量命令的执行时间。该变量存储自 shell 启动以来经过的秒数。

[root@master ~]#start=$sencods
[root@master ~]#ls
anaconda-ks.cfg       main.py                    公共  图片  音乐
data.json             redis-5.0.7.tar.gz         模板  文档  桌面
initial-setup-ks.cfg  webmin-2.100-1.noarch.rpm  视频  下载
[root@master ~]#end=$sencods
[root@master ~]#echo "Elapsed time: $((end-start)) seconds."
Elapsed time: 0 seconds.

三、使用Perf工具

perf 工具是 Linux 性能分析工具套件中的一部分,它提供了丰富的性能分析功能,包括测量命令执行时间。

[root@master ~]#yum install perf.x86_64 -y
[root@master ~]#perf stat ls
anaconda-ks.cfg       main.py			 公共  图片  音乐
data.json	      redis-5.0.7.tar.gz	 模板  文档  桌面
initial-setup-ks.cfg  webmin-2.100-1.noarch.rpm  视频  下载

 Performance counter stats for 'ls':

              0.81 msec task-clock                #    0.640 CPUs utilized          
                 0      context-switches          #    0.000 K/sec                  
                 0      cpu-migrations            #    0.000 K/sec                  
               325      page-faults               #    0.401 M/sec                  
   <not supported>      cycles                                                      
   <not supported>      instructions                                                
   <not supported>      branches                                                    
   <not supported>      branch-misses                                               

       0.001265749 seconds time elapsed

       0.001241000 seconds user
       0.000000000 seconds sys

此输出提供了丰富的性能统计信息,包括任务时钟、上下文切换、CPU 迁移、页面错误、CPU 周期、指令数量、分支数量等。通过这些统计信息,您可以更详细地了解命令执行期间系统的性能状况。

四、使用GNU time工具

GNU time 是一个独立的时间命令,它比内置的 time 命令更加灵活,并且提供了更多的选项。

[root@master ~]#/usr/bin/time -v ls
anaconda-ks.cfg       main.py			 公共  图片  音乐
data.json	      redis-5.0.7.tar.gz	 模板  文档  桌面
initial-setup-ks.cfg  webmin-2.100-1.noarch.rpm  视频  下载
	Command being timed: "ls"
	User time (seconds): 0.00
	System time (seconds): 0.00
	Percent of CPU this job got: 100%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 1188
	Average resident set size (kbytes): 0
	Major (requiring I/O) page faults: 0
	Minor (reclaiming a frame) page faults: 362
	Voluntary context switches: 1
	Involuntary context switches: 1
	Swaps: 0
	File system inputs: 0
	File system outputs: 0
	Socket messages sent: 0
	Socket messages received: 0
	Signals delivered: 0
	Page size (bytes): 4096
	Exit status: 0

执行以上命令后,您将看到详细的时间统计信息,包括 CPU 使用情况、内存使用情况等。这些信息对于深入了解命令的执行情况非常有帮助,尤其是在进行性能优化或调试时。

五、使用Strace工具

strace 是一个强大的系统调用跟踪工具,它可以跟踪进程的系统调用并记录下来,包括每个系统调用的执行时间。

[root@master ~]#yum install strace.x86_64  -y
[root@master ~]#strace -c ls
anaconda-ks.cfg       main.py			 公共  图片  音乐
data.json	      redis-5.0.7.tar.gz	 模板  文档  桌面
initial-setup-ks.cfg  webmin-2.100-1.noarch.rpm  视频  下载
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 13.53    0.000018           6         3           munmap
 10.53    0.000014           1        12           open
  9.77    0.000013           4         3           write
  9.02    0.000012           1        10           read
  9.02    0.000012           0        18           mprotect
  6.77    0.000009           0        15           close
  6.77    0.000009           0        29           mmap
  6.77    0.000009           4         2           getdents
  6.02    0.000008           4         2         2 statfs
  5.26    0.000007           7         1           openat
  3.01    0.000004           0        13           fstat
  3.01    0.000004           2         2           ioctl
  2.26    0.000003           0         4         3 access
  1.50    0.000002           2         1         1 stat
  1.50    0.000002           0         3           brk
  1.50    0.000002           2         1           futex
  0.75    0.000001           0         2           rt_sigaction
  0.75    0.000001           1         1           rt_sigprocmask
  0.75    0.000001           1         1           getrlimit
  0.75    0.000001           1         1           set_tid_address
  0.75    0.000001           1         1           set_robust_list
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         1           arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00    0.000133                   127         6 total

此输出将显示每个系统调用的执行时间统计信息,包括调用的百分比、总时间、平均每次调用的时间等。通过分析这些信息,您可以进一步了解命令执行期间系统调用的性能状况。

六、补充

除了以上提到的工具之外,还可以利用 Linux 系统自带的一些工具来测量命令的执行时间,比如 /usr/bin/time、top、ps 等。这些工具提供了不同的性能统计信息和分析功能,可以根据具体需求选择合适的工具进行使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值