shell脚本的性能分析工具

前端之家收集整理的这篇文章主要介绍了shell脚本的性能分析工具前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图加快一些脚本的调用子shell并做各种各样的事情。我想知道是否有任何可用的工具来执行shell脚本及其嵌套的shell,并报告脚本的哪些部分是最昂贵的。

例如,如果我有一个如下所示的脚本。

  1. #!/bin/bash
  2.  
  3. echo "hello"
  4. echo $(date)
  5. echo "goodbye"

我想知道三条线的长短。时间只会给我全部时间的脚本。 bash -x是有趣的,但不包括时间戳或其他时间信息。

您可以设置PS4显示时间和行号。这样做不需要安装任何实用程序和工作,而不将stderr重定向到stdout。

对于这个脚本:

  1. #!/bin/bash -x
  2. # Note the -x flag above,it is required for this to work
  3. PS4='$(date "+%s.%N ($LINENO) + ")'
  4. for i in {0..2}
  5. do
  6. echo $i
  7. done
  8. sleep 1
  9. echo done

输出如下:

  1. + PS4='$(date "+%s.%N ($LINENO) + ")'
  2. 1291311776.108610290 (3) + for i in '{0..2}'
  3. 1291311776.120680354 (5) + echo 0
  4. 0
  5. 1291311776.133917546 (3) + for i in '{0..2}'
  6. 1291311776.146386339 (5) + echo 1
  7. 1
  8. 1291311776.158646585 (3) + for i in '{0..2}'
  9. 1291311776.171003138 (5) + echo 2
  10. 2
  11. 1291311776.183450114 (7) + sleep 1
  12. 1291311777.203053652 (8) + echo done
  13. done

这假设是GNU date,但是您可以将输出规范更改为您喜欢的任何内容或与您使用的日期版本相匹配的任何内容

注意:如果您有一个现有的脚本,要进行此操作而不进行修改,则可以执行以下操作:

  1. PS4='$(date "+%s.%N ($LINENO) + ")' bash -x scriptname

猜你在找的Bash相关文章