首页 > 代码库 > Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段
Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段
该脚本主要的目的是练习在Linux bash脚本中捕获信号,顺便练习一下函数的使用,还有就是终止一个正在运行的程序后,该程序打开的文件的后续处理问题等等!
脚本功能:
ping一个网段内的IP,检测哪些IP在线,哪些IP不在线
练习的命令:
1、mktemp
用法:#mktemp /Path/To/SomeFile.XXX 其中XXX可以为多个,是由系统随机生成的一段字符串
-d 创建为目录
2、ping 测试网络是否通畅
用法:#ping [-c #] [-W N] IP
-c # ,#表示指定ping的次数
-W N,N表示指定超时时间
3、trap 捕获信号
用法:#trap ‘COMMAND‘ SIGN_Table
常用信号有:
1:SIGHUP 作用:使一个进程重读配置文件而不用重启进程
2:SIGINT 作用:中断一个进程,Ctrl+C 发送的就是该信号
9:SIGKILL 作用:无论如何都要杀死一个进程,相对于15号信号
15:SIGTERM 作用:会让其把自己相关事务处理好后再杀死该进程
18:SIGCONT 作用:使一个停止的进程继续进行
19:SIGSTOP 作用:使一个进程停止作业,Ctrl+z发送的就是该信号
4、tee 读取标准输入的数据,并将其内容输出到文件
用法:tee [-a] /Path/To/SomeFile
-a :表示附加到既有文件的后面,而非覆盖它.
说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存到文件。
!/bin/bash NET=192.168.1 FILE=`mktemp /tmp/file.XXXXXX` cleanup(){ echo "Quiting..." rm -f $FILE exit 1 } trap ‘cleanup‘ INT for I in {1..254};do if ping -c 1 -W 1 $NET.$I &> /dev/null; then echo -e "\033[32m$NET.$I is up\033[03m" | tee -a $FILE else echo -e "\033[31m$NET.$I is down\033[03m" fi done有兴趣的朋友,可以把这里调试一下,在ping的过程中按Ctrl+c试试看效果哦!
本文出自 “上善若水厚德载物” 博客,请务必保留此出处http://linux0s.blog.51cto.com/9529795/1873371
Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段