Bash:最后(尝试,除外)例外
发布时间:2020-12-16 01:53:21 所属栏目:安全 来源:网络整理
导读:我想在bash脚本的末尾执行一些命令,即使用户按CTRL C取消其执行. 我知道我可以从另一种编程语言(例如Python)中运行bash脚本,这样我就可以使用’finally'(try-finally)块来执行一些代码. 但是知道StackOverflow是一个交换神话般的想法的中心,我问是否有办法在
我想在bash脚本的末尾执行一些命令,即使用户按CTRL C取消其执行.
我知道我可以从另一种编程语言(例如Python)中运行bash脚本,这样我就可以使用’finally'(try-finally)块来执行一些代码. 但是知道StackOverflow是一个交换神话般的想法的中心,我问是否有办法在我的bash脚本中做我想做的事情. 那么,想法? 编辑: 我想要的是杀死我的bash中打开的每个进程,即selenium和Xvfb proccesses. 我试着写这个代码: trap "selenium_pids=$(ps ux | awk '/selenium/ && !/awk/ {print $2}');for pid in $selenium_pids; do kill -9 $pid;done; xvfb_pids=$(ps ux | awk '/Xvfb/ && !/awk/ {print $2}'); for pid in $xvfb_pids; do kill -9 $pid; done" EXIT 但这迫使我多次按“CTRL C”,在我的脚本内部的每次子进程运行,如: Testing nsi.bd.helpcenter ...^C: -- Total time: 0min 0seg Testing nsi.bibliography ...^C: -- Total time: 0min 0seg Testing nsi.digitallibrary ...^C: -- Total time: 0min 0seg Testing nsi.digitallibraryinstaller ...^C: -- Total time: 0min 1seg Testing nsi.digitallibraryskins ...^C: -- Total time: 0min 0seg ....#continues 将陷阱行的最后一行从EXIT更改为SIGINT,如下所示: trap "selenium_pids=$(ps ux | awk '/selenium/ && !/awk/ {print $2}');for pid in $selenium_pids; do kill -9 $pid;done; xvfb_pids=$(ps ux | awk '/Xvfb/ && !/awk/ {print $2}'); for pid in $xvfb_pids; do kill -9 $pid; done" SIGINT 做同样的事情. 现在要在第一个CTRL C上退出什么? 因为我试图在字符串的最后添加一个“退出1”,就像 它可以在第一个CTRL C上退出,但没有杀死我想要的进程. 想法? 解决方法
得到了我想要的代码:
finalize_xvfb_and_selenium() { selenium_pids=$(ps ux | awk '/selenium/ && !/awk/ {print $2}') for pid in $selenium_pids; do kill -9 $pid done xvfb_pids=$(ps ux | awk '/Xvfb/ && !/awk/ {print $2}') for pid in $xvfb_pids; do kill -9 $pid done } finalize_xvfb_and_selenium_and_exit() { finalize_xvfb_and_selenium echo -e "nnXvfb and seleniumrc finalized. Exiting ..." exit 13 } #trap (CTRL+C) signal,to finalize proccess running before exit trap finalize_xvfb_and_selenium_and_exit SIGINT 我知道有比使用kill -9更好的资源. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Jmeter插件开发
- Angular Reactive Form 表单验证
- Couldn't register with the bootstrap server错误
- [Angular] Improve Server Communication in Ngrx Effects
- twitter-bootstrap – 引导日期戳
- AngularJS中的单向,双向,3向,……或更多数据绑定?
- scala – Spark中的java.util.concurrent.RejectedExecutio
- Vim加密:如何破解呢?
- 如何在ngRepeat数组之间推送AngularJS中的对象
- 详解使用docker 1.12 搭建多主机docker swarm集群