文章目录

  • 1.显示执行脚本花费的时间
  • 2.在脚本退出时杀死后台运行的程序
  • 3.在脚本退出时跳出循环
  • 4.读取命令行参数来决定循环次数

1.显示执行脚本花费的时间

网址:bash - How to get execution time of a script effectively? - Unix & Linux Stack Exchange
一种方法是在脚本外部统计花费的时间:

time yourscript.sh

另一种方法是在脚本内部进行统计:

start=`date +%s`
sleep 1
end=`date +%s`
runtime=$((end-start))
echo " total time passed : " $runtime "s"

2.在脚本退出时杀死后台运行的程序

有时候一个脚本中会运行后台程序,如:
test.py:

import time
while True:print("running")time.sleep(1)

test.sh:

python3 test.py  &
python3 test.py &
wait

如果你按ctrl-c终止脚本,那么后台运行的这2个Python程序都不会停止,你只能手动kill:
参考:Find and kill a process in one line using bash and regex - Stack Overflow

kill $(ps aux | grep '[p]ython3 test'| awk '{print $2}')

你需要在脚本第一行加上如下内容:

trap 'kill $(ps aux | grep '"'"'[p]ython3 test'"'"' | awk '"'"'{print $2}'"'"')' EXIT

这样在脚本结束的时候,就会自动kill掉后台运行的程序

然后我看到了另外一个解决方法,在脚本的最前面加上:

trap 'kill $(jobs -p)' EXIT

这个方法比上面的还好用。

3.在脚本退出时跳出循环


代码如下:
参考网址:bash + how to exit from secondary script and from the main script on both time - Unix & Linux Stack Exchange

#trap "echo Exited!; exit;" SIGINT SIGTERM
for (( i = 0; i < 10; i++ )); dosleep 10  || break;
#    wait $!
done

如果想要程序后台运行,代码如下:
参考网址:linux - How to write loop in Bash that will break on CTRL+C? - Stack Overflow

#trap "echo Exited!; exit;" SIGINT SIGTERM
for (( i = 0; i < 10; i++ )); dosleep 10  &wait $!
done

我还看到一个有趣的回答:
按Ctrl-Z暂停脚本
kill %%
参考网址:signals - How to stop the loop bash script in terminal? - Unix & Linux Stack Exchange

4.读取命令行参数来决定循环次数

其实命令行参数是很好用的,尤其在你需要调整线程的时候,示例如下:

trap 'echo exit && kill $(ps aux | grep '"'"'[p]ython3 test'"'"' | awk '"'"'{print $2}'"'"')' EXIT
if [ "$1" != "" ]; thenecho "Positional parameter 1 contains something"for ((i=1; i<=$1; i++)); dopython3 test2.py &done
elseecho "Positional parameter 1 is empty"exit
fi
wait

这段代码会根据你输入的参数决定循环次数。
参考:bash - Using a variable in brace expansion range fed to a for loop - Stack Overflow

linux下bash脚本常用的十个技巧:显示执行脚本花费的时间,在脚本退出时杀死后台运行的程序,在脚本退出时跳出循环,读取命令行参数来决定循环次数相关推荐

  1. Linux在后台运行python程序、脚本程序、可执行程序等,关闭终端仍可保持程序运行

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 Linux在后台运行python程序.脚本程序.可执行程序等,关闭终端仍可保持程序运行 文章目录: 1 为什么需要后台运 ...

  2. linux下Bash编程until语句及格式化硬盘分区等编写脚本(十)

    linux下Bash编程until语句及格式化硬盘分区等编写脚本(十) 1.循环语句结构总结 1.1.while语句当条件满足时,进入循环语句 while 条件; do 语句 done 1.2.unt ...

  3. linux之gdb调试常用100个技巧

    linux之gdb调试常用100个技巧 https://gitlore.com/page/gitlore-git/gdb_tips/index.html 如果不懂linux gdb调试的 看下这篇文章 ...

  4. Linux系统常用函数,浅谈linux下的一些常用函数的总结(必看篇)

    1.exit()函数 exit(int n)  其实就是直接退出程序, 因为默认的标准程序入口为int main(int argc, char** argv),返回值是int型的. 一般在shell下 ...

  5. linux 骇客帝国脚本,Linux下,那些让人惊叹的命令执行效果

    Linux下,那些让人惊叹的命令执行效果 之前介绍过linux常用命令一文,接下来我们来一起学习一下linux里好玩的命令作者:luckyw2016-12-08 18:23 之前介绍过linux常用命 ...

  6. linux sd卡测速工具下载,Linux下3种常用的网络测速工具

    原标题:Linux下3种常用的网络测速工具 不管你用的是什么操作系统,网速都是你非常关心的一个性能指标,毕竟,谁都不想看个视频结果网速卡到你怀疑人生.本文介绍三个 Linux 命令行下的网络测速工具, ...

  7. linux 命令美丽,美丽的程序猿-Linux下那些查找文件的小技巧-find

    原标题:美丽的程序猿-Linux下那些查找文件的小技巧-find 一.按照文件名匹配查找 1. 查找当前目录下的文件tmp.sh find . –name tmp.sh 可以看出,使用.查找是查找当前 ...

  8. linux mysql常用基本操作,Linux下MySQL数据库常用基本操作 一

    Linux下MySQL数据库常用基本操作 一 0.登录数据库 mysql -u root -p 1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 ...

  9. Linux下提权常用小命令

    有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...

最新文章

  1. 推荐6个绝赞良心工具,总有一些适合你!
  2. 程序员 35 岁就该退休了吗?
  3. 组合框CComboBox响应函数
  4. [Spring cloud 一步步实现广告系统] 20. 系统运行测试
  5. 数据分析软件-weka
  6. lftp压缩对方服务器文件,lftp 贴心好友 备份服务器bash脚本
  7. 自编码的matlab代码,深度学习自动编码机MATLAB实现
  8. python 列表常用操作(二)
  9. linux iptables配置
  10. jbpm的例子之四 使用decision
  11. FireMonkey 源码学习(4)
  12. 实战 | Java 流之Stream,Lambda以及日期
  13. Jmeter 乱码解决方法
  14. Java class反编译工具
  15. 1028 人口普查 (Python实现)
  16. linux 修改网卡mac地址,Ubuntu 更改mac地址
  17. 程序员眼中的漫威!太有才了!
  18. SSM整合-异常处理器及项目异常处理方案
  19. On-premises software 释义http://en.wikipedia.org/wiki/On-premises_software
  20. 举个栗子!Tableau 技巧(199):用 Prep 正则表达式拆分复杂字段

热门文章

  1. python的类属性和方法_Python中类属性、实例属性和实例方法的区别
  2. Linux 下的动态库、静态库与环境变量
  3. BMC Biology:香港城市大学孙燕妮组发表高准确度预测病毒宿主的工具
  4. Microbiome:生态中心张丽梅组-植物发育时期驱动玉米微生物组生态角色的分化...
  5. NC:噬菌体中无机硫辅助代谢基因的生态学研究
  6. pandas使用sort_index函数按照索引排序对dataframe的数据行进行排序(sort dataframe rows by index)
  7. pandas使用query函数查询dataframe指定数据列的内容(数值)包含在特定列表中的数据行(select rows which column values contain in list)
  8. R语言polygon函数绘制多边形实战
  9. R语言dim函数返回NULL
  10. R算数运算符:+、-、*、/、%%、%/%、^