linux下bash脚本常用的十个技巧:显示执行脚本花费的时间,在脚本退出时杀死后台运行的程序,在脚本退出时跳出循环,读取命令行参数来决定循环次数
文章目录
- 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脚本常用的十个技巧:显示执行脚本花费的时间,在脚本退出时杀死后台运行的程序,在脚本退出时跳出循环,读取命令行参数来决定循环次数相关推荐
- Linux在后台运行python程序、脚本程序、可执行程序等,关闭终端仍可保持程序运行
欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 Linux在后台运行python程序.脚本程序.可执行程序等,关闭终端仍可保持程序运行 文章目录: 1 为什么需要后台运 ...
- linux下Bash编程until语句及格式化硬盘分区等编写脚本(十)
linux下Bash编程until语句及格式化硬盘分区等编写脚本(十) 1.循环语句结构总结 1.1.while语句当条件满足时,进入循环语句 while 条件; do 语句 done 1.2.unt ...
- linux之gdb调试常用100个技巧
linux之gdb调试常用100个技巧 https://gitlore.com/page/gitlore-git/gdb_tips/index.html 如果不懂linux gdb调试的 看下这篇文章 ...
- Linux系统常用函数,浅谈linux下的一些常用函数的总结(必看篇)
1.exit()函数 exit(int n) 其实就是直接退出程序, 因为默认的标准程序入口为int main(int argc, char** argv),返回值是int型的. 一般在shell下 ...
- linux 骇客帝国脚本,Linux下,那些让人惊叹的命令执行效果
Linux下,那些让人惊叹的命令执行效果 之前介绍过linux常用命令一文,接下来我们来一起学习一下linux里好玩的命令作者:luckyw2016-12-08 18:23 之前介绍过linux常用命 ...
- linux sd卡测速工具下载,Linux下3种常用的网络测速工具
原标题:Linux下3种常用的网络测速工具 不管你用的是什么操作系统,网速都是你非常关心的一个性能指标,毕竟,谁都不想看个视频结果网速卡到你怀疑人生.本文介绍三个 Linux 命令行下的网络测速工具, ...
- linux 命令美丽,美丽的程序猿-Linux下那些查找文件的小技巧-find
原标题:美丽的程序猿-Linux下那些查找文件的小技巧-find 一.按照文件名匹配查找 1. 查找当前目录下的文件tmp.sh find . –name tmp.sh 可以看出,使用.查找是查找当前 ...
- linux mysql常用基本操作,Linux下MySQL数据库常用基本操作 一
Linux下MySQL数据库常用基本操作 一 0.登录数据库 mysql -u root -p 1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 ...
- Linux下提权常用小命令
有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...
最新文章
- 推荐6个绝赞良心工具,总有一些适合你!
- 程序员 35 岁就该退休了吗?
- 组合框CComboBox响应函数
- [Spring cloud 一步步实现广告系统] 20. 系统运行测试
- 数据分析软件-weka
- lftp压缩对方服务器文件,lftp 贴心好友 备份服务器bash脚本
- 自编码的matlab代码,深度学习自动编码机MATLAB实现
- python 列表常用操作(二)
- linux iptables配置
- jbpm的例子之四 使用decision
- FireMonkey 源码学习(4)
- 实战 | Java 流之Stream,Lambda以及日期
- Jmeter 乱码解决方法
- Java class反编译工具
- 1028 人口普查 (Python实现)
- linux 修改网卡mac地址,Ubuntu 更改mac地址
- 程序员眼中的漫威!太有才了!
- SSM整合-异常处理器及项目异常处理方案
- On-premises software 释义http://en.wikipedia.org/wiki/On-premises_software
- 举个栗子!Tableau 技巧(199):用 Prep 正则表达式拆分复杂字段
热门文章
- python的类属性和方法_Python中类属性、实例属性和实例方法的区别
- Linux 下的动态库、静态库与环境变量
- BMC Biology:香港城市大学孙燕妮组发表高准确度预测病毒宿主的工具
- Microbiome:生态中心张丽梅组-植物发育时期驱动玉米微生物组生态角色的分化...
- NC:噬菌体中无机硫辅助代谢基因的生态学研究
- pandas使用sort_index函数按照索引排序对dataframe的数据行进行排序(sort dataframe rows by index)
- pandas使用query函数查询dataframe指定数据列的内容(数值)包含在特定列表中的数据行(select rows which column values contain in list)
- R语言polygon函数绘制多边形实战
- R语言dim函数返回NULL
- R算数运算符:+、-、*、/、%%、%/%、^