bash信号捕捉
我们ping一个主机,然后按下 可是如果使用一个循环来逐个ping不同主机,你再按下 #!/bin/bash NETWORK=172.16.42. # -W 表示超时时长 -c 是发送几个ping包 for IP in {1..20}; do ping -W 1 -c 10 ${NETWORK}${IP} done 脚本没有停止而是依然继续执行,但是你发现172.16.42.1是通的,而且我们通过-c参数应该是ping 10次,当完成第5次ping的时候,我们按下 不过这么解释并不完全正确,因为你要知道
针对上面的例子如何修改呢? #!/bin/bash # 捕捉INT,然后执行exit 1,该命令通常写在脚本第一行 trap 'exit 1' INT NETWORK=172.16.42. # -W 表示超时时长 -c 是发送几个ping包 for IP in {1..20}; do ping -W 1 -c 10 ${NETWORK}${IP} done 再次运行这个脚本那么依然会执行循环,但是trap并不执行而是一直等着信号发生,我们使用的 如果你想让捕捉信号时做更多操作,你可以使用函数的方式,如下代码: #!/bin/bash trap 'sig_handler' INT sig_handler(){ echo "Quit" exit 1 } NETWORK=172.16.42. # -W 表示超时时长 -c 是发送几个ping包 for IP in {1..20}; do ping -W 1 -c 10 ${NETWORK}${IP} done 也就是突然终止后需要做一些收尾的清理操作,你就可以通过上面自定义一个函数来执行。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- CXF开发与配置webservice .
- AngularJS UI Bootstrap Typeahead:从对象到输入
- Windows下编译PHP和memcache扩展教程
- angularjs – Angular facebook-comments指令
- Bootstrap 4 beta 3使用angular-cli抛出错误
- 用于特定输出的Bash脚本监视程序
- Angular> = 4.3,httpClient.get params为空
- 编译错误:未找到:使用Scala时在Play框架中对no
- Bootstrap Table快速完美搭建后台管理系统
- scala – 在Int => Int = _ 1 中_的用法是什么