linux刷命令脚本,linux – 如何调试bash脚本并获得每个命令的执行时间

这是尽可能接近内置bash调试工具的答案,因为它从脚本执行开始时间提供了整体时序信息.

在脚本的顶部添加此项以进行第二次计数:

export PS4='+[${SECONDS}s][${BASH_SOURCE}:${LINENO}]: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'; set -x;

相同,但用毫秒代替:

N=`date +%s%N`; export PS4='+[$(((`date +%s%N`-$N)/1000000))ms][${BASH_SOURCE}:${LINENO}]: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'; set -x;

最后一个例子可以达到微秒精度,请记住你正在使用bash :).

示例脚本:

#!/bin/bash

N=`date +%s%N`

export PS4='+[$(((`date +%s%N`-$N)/1000000))ms][${BASH_SOURCE}:${LINENO}]: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'; set -x;

sleep 1

exit

调试输出示例:

+[3ms][/root/db_test.sh:5]: sleep 1

+[1012ms][/usr/local/bin/graphite_as_rand_stat.sh:6]: exit

请记住,您可以选择性地调试脚本的特定部分,方法是将其封装在调试启动时的“set -x”和调试端的“debug x”中.从执行开始,定时数据仍将正确显示.

附录

为了完整起见,如果您确实需要差分计时数据,您可以将调试信息重定向到文件并在之后处理它.

鉴于此示例脚本:

#!/bin/bash

N=`date +%s%N`

export PS4='+[$(((`date +%s%N`-$N)/1000000))ms][${BASH_SOURCE}:${LINENO}]: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'; set -x;

sleep 1

for ((i=0;i<2;i++)); do

o=$(($RANDOM*$RANDOM/$RANDOM))

echo $o

sleep 0.$o

done

exit

在将调试重定向到文件时运行它:

./example.sh 2>example.dbg

并输出差分调试时序(涵盖多线):

p=0; cat example.dbg | while read l; do [[ ! ${l%%[*} =~ ^\+ ]] && echo $l && continue; i=`echo $l | sed 's#[^0-9]*\([0-9]\+\).*#\1#'`; echo $l | sed "s#${i}ms#${i}ms+$(($i-$p))ms#"; p=$i; done

输出:

+[2ms+2ms][./example.sh:5]: sleep 1

+[1006ms+1004ms][./example.sh:6]: (( i=0 ))

+[1009ms+3ms][./example.sh:6]: (( i<2 ))

+[1011ms+2ms][./example.sh:7]: o=19258

+[1014ms+3ms][./example.sh:8]: echo 19258

+[1016ms+2ms][./example.sh:9]: sleep 0.19258

+[1213ms+197ms][./example.sh:6]: (( i++ ))

+[1217ms+4ms][./example.sh:6]: (( i<2 ))

+[1220ms+3ms][./example.sh:7]: o=176

+[1226ms+6ms][./example.sh:8]: echo 176

+[1229ms+3ms][./example.sh:9]: sleep 0.176

+[1442ms+213ms][./example.sh:6]: (( i++ ))

+[1460ms+18ms][./example.sh:6]: (( i<2 ))

+[1502ms+42ms][./example.sh:11]: exit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指定查询条件,查询对应的集合List(单表)

TestDao.java&#xff08;测试类&#xff09; Test public void findCollectionByConditionNoPage(){ ApplicationContext ac new ClassPathXmlApplicationContext("beans.xml"); IElecTextService elecTextService (IElecTextService) ac.getBean(IElecTextServ…

PyCharm社区版支持深度学习_深度学习,大家都看哪些社区论坛?

对代码、编程感兴趣的可以加我公众号<老K玩代码>&#xff0c;和我交流!“学习Python&#xff0c;有一半的小伙伴是冲着深度学习来的。自学虽好&#xff0c;但还是需要有人指点。那有没有什么研究深度学习的朋友比较会聚集的网络社区或平台工具呢&#xff1f;其实是有的&a…

linux 自带 mysql,linux下安装mysql

1.查看CentOS自带的mysqlrpm -qa | grep mysql2.卸载CentOS自带的mysqlrpm -e --nodeps 要卸载的软件3.下载mysql.tar将mysql压缩包通过xftp连接到linux上4.上传mysql到linuxroot登录xshell5.在/usr/local/下创建mysql文件夹&#xff0c;解压Mysql到mysql目录cd /usr/localmkdi…

石油化工设备维护检修规程_旋回破碎机横梁臂架、衬板、内外铜套检修步骤及设备检修维护要点...

旋回破碎机做为常用的头破粗碎设备&#xff0c;其突出优势就是产能高&#xff0c;破碎比大&#xff0c;可达6-9.5&#xff0c;个别情况到13.5&#xff0c;且工作平稳&#xff0c;振动小。为了保障旋回破碎机在工作时保持良好的运行状态&#xff0c;必须要加强对其日常维护与检修…

《程序员开发心理学》阅读笔记一

今天开始阅读《程序员开发心理学》这本书&#xff0c;只是开了个小头。 这本书的开篇就提到了作者对于阅读程序的看法&#xff0c;正如老师交给我们的一样&#xff0c;在学习编程的时候第一步就是要学习&#xff0c;只有多看别的的程序、代码才有可能把它转化为自己的东西&…

摄像头图像分析目标物体大小位置_摄像头的原理、组成、选型及应用

目录一、摄像头成像的光学原理二、摄像头模组构成以及功能原理三、摄像头名词释义四、摄像头参数解析五、摄像头选型一、摄像头成像的光学原理1.1 光学的基本定律&#xff08;1&#xff09;光线直线传播定律&#xff1a;在统一均匀介质中&#xff0c;光沿直线传播&#xff08;2…

linux服务器上网页变形,Linux服务器上用iScanner删除网页恶意代码的方法

第一步&#xff1a;安装首先要确保服务器上已经安装了Ruby复制代码代码如下:#ruby -v //查看ruby的版本信息如果服务器上没有安装&#xff0c;可以通过yum或者apt-get安装ruby(根据自己服务器系统选择对应的方法安装)复制代码代码如下:#yum install ruby //centos用yum安装#apt…

切图总结

前些日子仿了优酷的首页&#xff0c;中间遇到一些问题&#xff0c;积累了点经验&#xff0c;做个总结。1. 需要最先明白的两点 不要只是无脑的切图&#xff0c;要去体会设计师的意图&#xff0c;不仅仅是还原设计稿&#xff0c;而且要尽可能去还原设计师的设计理念。切图的时候…

linux更改cxxflags环境变量,在64位的ubuntu 14.04 上开展32位Qt 程序开发环境配置(pro文件中增加 QMAKE_CXXFLAGS += -m32 命令)...

为了能中一个系统上开发64或32位C程序&#xff0c;费了些周折&#xff0c;现在终于能够开始干过了。在此记录此时针对Q5.4版本的32位开发环境配置过程。1. 下载Qt 5.4 的32位版本&#xff0c;进行安装&#xff0c;安装过程中会发现一些32位的库没有安装&#xff0c;根据提示的错…

git 合并冲突_GIT提交记录和Revert commit过程分析

一、根据GIT提交记录查看提交过程先做个git分支的背景介绍图1步骤说明1⃣️ 项目A 默认分支是 master2⃣️ 基于master分支创建 f1、f2、test分支3⃣️ f1 发起合并请求到 test分支4⃣️ f2 fetch & merge test分支 &#xff08;此时可能会有冲突&#xff09;5⃣️ &#x…

使用android-junit-report.jar导出单元测试报告

Android在使用脚本编译和测试时&#xff0c;使用默认的testrunner不会输出文件类型的单元测试报告&#xff0c;每次只能分析logcat的无法直观的看到单元测试结果和报告&#xff0c;这给编写自动化脚本带来了不少麻烦&#xff0c;虽然可以自己动手编写支持junit测试报告输出的Te…

2020.2idea创建web_使用IDEA配置Tomcat(亲测成功)

优质文章导读: XML入门(零基础教程) 一文了解Java反射 Servlet入门(零基础教程)配置环境变量打开环境变量设置,点击新建 新建两个变量CATALINA_HOME和CATELINA_BASE,变量值为Tomcat的安装路径 打开Path 添加进去刚刚创建的两个变量 IDEA中配置Tomcat创建web项目 点击 号 选择 …

linux打开另一台linux的图形化,【工具大道】ssh登录Linux服务器,并显示图形化界面...

点击关注微信公众号 "程序员的文娱情怀"分享提纲&#xff1a;1. 概述2. mac版实现ssh登录&#xff0c;显示图形化1. 概述平时ssh登录到Linux服务器都是在命令行下进行操作的&#xff0c;简单高效。但是有些时候&#xff0c;需要配置一些Linux系统下的图形化软件的参数…

c++循环执行一个函数_循环

循环目标程序的三大流程while 循环基本使用break 和 continuewhile 循环嵌套01. 程序的三大流程在程序开发中&#xff0c;一共有三种流程方式&#xff1a;顺序 —— 从上向下&#xff0c;顺序执行代码分支 —— 根据条件判断&#xff0c;决定执行代码的 分支循环 —— 让 特定代…

如何配置一个最基本的web富文本编辑器?--之wangEditor(验证成功)

第一步&#xff0c;引用wangEditor的css文件&#xff0c;css文件最好在<head>中引用 <link rel"stylesheet" type"text/css" href"css/wangEditor-1.3.0.min.css"> 第二步&#xff0c;引用jquery和wangEditor.js&#xff0c;js文件最…

地表反射率影响因素_【热岛强度可影响城市夏季降水落区】

本期嘉宾&#xff1a;北京城市气象研究院研究员 苗世光 副研究员 张亦洲采访人&#xff1a;中国气象报记者 宛霞 通讯员 楚艳丽本期观点&#xff1a;城市化对天气的影响越来越显著 &#xff0c;城市热岛强度可作为区分城市下垫面对夏季降水影响类型的重要因素。一直以来&#x…

linux 查看机器ram,Linux查看CPU信息、机器型号等硬件信息

测试机器的硬件信息&#xff1a;查看CPU信息(型号)# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c8 Intel(R) Xeon(R) CPU E5410 2.33GHz(看到有8个逻辑CPU, 也知道了CPU型号)# cat /proc/cpuinfo | grep physical | uniq -c4 physical id : 04…

gitlab 将管理员权限移交给ldap账户_CDPDC中Atlas集成FreeIPA的LDAP认证

文档编写目的Cloudera从CM6.3版本开始&#xff0c;引入了Red Hat IdM来做整个集群的认证&#xff0c;Red Hat IdM对应的软件为FreeIPA&#xff0c;在本文中描述如何使用FreeIPA来做CDP-DC集群的认证。关于FreeIPA服务器搭建参考<使用FreeIPA对Linux用户权限统一管理>。之…

emwin edit控制的输入长度小数点怎么处理_变频器学习,变频器主电路与控制回路学习...

一、变频器主电路的接线流程1、当我们拿到变频器&#xff0c;挤压变频器两侧凹槽&#xff0c;打开上盖&#xff0c;取下挡线板&#xff0c;变频器的R, S, T端子接电源线&#xff0c;U, V, W端子接电机线&#xff0c;地线符号处接地线。2、我们将电源线的黄、绿、红按照顺序接到…

linux 安全审计功能,数据库安全审计在数据安全中的功能

导读在数据安全治理过程中&#xff0c;首先通过数据资产梳理确定敏感数据的存储位置和使用情况&#xff0c;从而制定有效的数据安全管理制度和规范一. 数据安全治理稽核在数据安全治理过程中&#xff0c;首先通过数据资产梳理确定敏感数据的存储位置和使用情况&#xff0c;从而…