Linux Shell脚本编程-信号捕获
bash编程的信号捕获:
kill -l 显示当前系统可用信号(trap -l)
获取帮助:man 7 single
常用信号:
1) SIGHUP 无须重启进程而让其重读配置文件
2) SIGINT 中断正在运行的进程;相当于Ctrl+c
9) SIGKILL 强制杀死正在运行的进程(直接关闭进程)
15) SIGTERM 正常方式终止正在运行的进程(会关闭进程打开的文件等再终止进程)
18) SIGCONT 让后台停止的进程继续在后台运行,相当于bg命令
19) SIGSTOP 将前台进程转入后台并停止运行,相当于Ctrl+Z
指定信号的方法:
信号的数字标识:1、2、9
信号完整名称:SIGHUP
信号的简写名称:HUP
捕获到某种信号,执行相关操作,如果操作复杂可以写成函数在调用函数
语法:trap 'COMMAND' SIGNAL
信号捕捉用于:在中止某个正在执行的脚本时,做一些清理操作(KILL信号是无法捕捉)
示例1:ping命令在脚本中Ctrl+C不能终止,用信号捕获到SIGINT信号就打印退出信息和退出脚本
#!/bin/bash
#捕获到SIGINT信号(按Ctrl+C时),就输出"quit"同时执行"exit 5"退出脚本
trap 'echo "quit"; exit 5' SIGINT
for i in {1..254}; do
if ping -w 1 -c 1 172.16.254.$i &> /dev/null; then
echo "172.16.254.$i is up."
else
echo "172.16.254.$i is down."
fi
done
示例2:在接收到INT信号时,因为命令还没有结束,但是又想把命令产生的文件删除,则可以定义一个函数,在使用 trap 命令时直接调用函数即可
#!/bin/bash
#
mytrp() {
echo "Quit"
rm -f ${hostmpfiles[*]}
exit 1
}
declare -a hosmpfiles
trap 'mytrp' INT
for i in {100..250};do
tmpfile=$(mktemp /tmp/ping.XXXXXX)
if ping -c1 -W1 192.168.1.$i &> /dev/null; then
echo "192.168.1.$i is up" |tee $tmpfile
else
echo "192.168.1.$i is down" |tee $tmpfile
fi
hostmpfiles[${#hostmpfiles[*]}]=$tmpfile
done
rm -f ${hostmpfiles[*]}
Linux Shell脚本编程-信号捕获的更多相关文章
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell脚本编程--Linux特殊符号大全
Linux Shell脚本编程--Linux特殊符号大全 linux_shell 特殊符号的介绍 2011
- Linux Shell脚本编程while语句
Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo uptime sleep 3done 2,把监控结果保存 ...
- Linux Shell脚本编程-基础1
概述: shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- 【学习】Linux Shell脚本编程
1.脚本的组成和执行 Linux shell脚本的结构并不复杂,其主要由变量.内部命令以及shell的语法结构和一些函数.其他命令行的程序等组成,以下是一个简单的shell脚本. #!/bin/bas ...
- [linux] shell脚本编程-xunsearch安装脚本学习
安装脚本setup.sh #!/bin/sh # FULL fast install/upgrade script # See help message via `--help' # $Id$ # s ...
随机推荐
- 关于表格元素的使用,table、<width>、<heigh>、<border>、<tr>、<th>、<td>、<align>、<colspan>、<rowspan>
<html> <head> <meta charset="UTF-8"> <title>个人简历& ...
- HDU 1222 Wolf and Rabbit( 简单拓欧 )
链接:传送门 题意:狼抓兔子,狼从 0 出发沿逆时针寻找兔子,每走一步的距离为 m ,所有洞窟的编号为 0 - n-1 ,问是否存在一个洞窟使得兔子能够安全躲过无数次狼的搜捕. 思路:简单的拓展欧几里 ...
- [luogu4133 BJOI2012] 最多的方案 (计数dp)
题目描述 第二关和很出名的斐波那契数列有关,地球上的OIer都知道:F1=1, F2=2, Fi = Fi-1 + Fi-2,每一项都可以称为斐波那契数.现在给一个正整数N,它可以写成一些斐波那契数的 ...
- MATLAB解析PFM格式图像
http://www.p-chao.com/ja/2016-09-27/matlab%E8%A7%A3%E6%9E%90pfm%E6%A0%BC%E5%BC%8F%E5%9B%BE%E5%83%8F/ ...
- CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...
对于text-overflow:ellipsis,文本超出部分显示...,但要实现这个效果,却有一些必备条件,如下: div{ overflow:hidden; white-space:nowrap; ...
- 循环语句第1种 LOOP ... END LOOP;
7)循环语句 --------第1种---------- LOOP ... END LOOP; declare n number(3) := 1; begin LOOP ...
- b.WHERE使用中多行子查询(适用于in,any,all条件)
b.多行子查询(适用于in,any,all条件) //查询与SCOTT和MARTIN在同一个部门的同事的编号和名称 select empno,ename from emp where ...
- Eclipse配置Maven私服
Eclipse配置Maven私服 前言: 搭建Maven私有仓库的主要目的,是为了在团队多人开发时,只要内网的私有仓库有下载过依赖的jar包,就直接从私有仓库获取,不再通过外网的中央仓库.如果私服上面 ...
- unity3d 延迟运行脚本语句
在Unity3D中.有yield语句它负责延迟操作,yield return WaitForSeconds(3.0); //等待 3 秒 查看unity3d脚本手冊,使用方法须要在对应的格式. 以下代 ...
- Docker 命令行和后台參数
Docker官方为了让用户高速了解Docker,提供了一个交互式教程,旨在帮助用户掌握Docker命令行的用法. Docker 命令行 以下对Docker的命令清单进行简单的介绍,具体内容在兴许章节具 ...