信号是Linux系统中一种进程通信机制。我们可以使用特定的信号来中断进程。每一种信号都同一个整数值相关联。

kill命令可用来想进程发送信号,而trap命令用来处理所接收的信号。

kill

列出所有可用的信号

[root@LAMP ~]# kill -l
) SIGHUP ) SIGINT ) SIGQUIT ) SIGILL ) SIGTRAP
) SIGABRT ) SIGBUS ) SIGFPE ) SIGKILL ) SIGUSR1
) SIGSEGV ) SIGUSR2 ) SIGPIPE ) SIGALRM ) SIGTERM
) SIGSTKFLT ) SIGCHLD ) SIGCONT ) SIGSTOP ) SIGTSTP
) SIGTTIN ) SIGTTOU ) SIGURG ) SIGXCPU ) SIGXFSZ
) SIGVTALRM ) SIGPROF ) SIGWINCH ) SIGIO ) SIGPWR
) SIGSYS ) SIGRTMIN ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+
) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+
) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+
) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX-
) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX-
) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX-
) SIGRTMAX- ) SIGRTMAX

经常用到的只有几个

SIGHUP 1   ——   对控制进程或终端终结进行挂起检测。
SIGINT 2   ——   Ctrl+C时发送该信号
SIGKILL 9  ——   强杀进程
SIGTERM 15 ——  默认终止进程
SIGTSTP 20 —— Ctrl+Z时发送该信号

用法,例如强杀httpd进程19421
[root@LAMP ~]# kill -s SIGKILL
[root@LAMP ~]# kill -

trap

一旦trap将某个函数分配一个信号,当脚本运行收到相应的信号,就会执行相应的函数

实例1:

[root@localhost sbin]# vim demo_trap.sh 

#/bin/bash
function hander(){
echo Hey,received signal : SIGINT
} echo My process ID is $$
trap 'hander' SIGINT while true;do
sleep
done

Ps:死循环的作用是使进程一直处于活动状态。

执行,并按Ctrl+C

[root@localhost sbin]# sh demo_trap.sh
My process ID is
^CHey,received signal : SIGINT

实例2,生产环境用作于跳板机,使普通操作用户连接只能操作脚本

[root@LAMP profile.d]# pwd
/etc/profile.d
[root@LAMP profile.d]# vim tiaoban.sh

function trapper(){
    trap ':' INT EXIT TSTP TERM HUP
}
if [ $UID -ne 0 ];then
while true;do
    trapper
    clear
    echo [1] WEB Server
    echo ""
echo [] APP Server
echo ""
echo [] DB Server
echo ""
echo [x] Exit
echo ""
read -p "Option: " nu
case $nu in
)
ssh redhat@192.168.1.20
;;
)
ssh appadmin@192.168.1.30
;;
)
ssh oracle@192.168.1.40
;;
x)
exit
;;
*)
echo "USAGE:[123x]"
read -p "Press any key to continue."
esac
done
fi

当用普通用户登陆时,直接执行脚本,并按ctrl+c等命令都无法进入命令行

aaarticlea/png;base64,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" alt="" />

												

shell脚本学习总结12--系统信号的更多相关文章

  1. 转 shell脚本学习指南

    shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...

  2. 笔记——shell脚本学习指南

    <shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...

  3. Shell脚本学习指南笔记

    Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...

  4. shell脚本学习之6小时搞定(1)

    shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...

  5. Shell 脚本学习资料搜集

    Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...

  6. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  7. Shell脚本学习 - 运算符

    继续shell脚本学习.上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作. 运算符 bash不支持简单的数学计算,需要依赖其他命令实现. expr可以代为实现. # 表达式一般这么写 ` + ...

  8. shell脚本学习总结02--数组

    bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...

  9. shell 脚本学习

    Shell简介 概述 Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令,并把它送入内核去执行.内核是Linux系统的心脏,从开机自检就驻留在计算机的内 ...

随机推荐

  1. Linux-软件包管理-yum在线管理-yum命令

    yum list 查看所有可用软件包列表 vim /etc/yum.repos.d/CentOS-Base.repo 查看当前linux系统默认的网络yum源信息 yum search httpd 搜 ...

  2. Mosquitto----服务器日志

    客户端连接日志 1403334375: New connection from 121.201.8.163 on port 1883. 1403334375: New client connected ...

  3. centos 7 搭建git远程仓储 免密登录

    第一步.安装git服务 yum install git 第二步.创建git用户 adduser git 第三步开启公钥验证 vi /etc/ssh/sshd_config 讲文件中的 #PubkeyA ...

  4. [转] C#与Java的比较

    [转] C#与Java的比较 转自:C#与Java的比较 2015-06-26 目录 一.C#.C++和Java二.语言规范的比较  2.1.简单数据类型  2.2.常量  2.3.公用类的入口点  ...

  5. 安装语言包(LANGUAGE PACKAGE)

    by 枫竹丹青 一.说明 在SAP ECC 安装好后,如果是生产版本,通常只有两种语言--英语和德语.这时如需中文环境,则需定义支持的语言类型并导入语言包.如果安装的是IDES版,则系统中已包含了几十 ...

  6. iOS中autolaylout和sizeclass的理解

    没发现居然有三四个月没写博客了,好惭愧.都是加班太多了,还好现在换了一家,还是得继续写啊. 主要是学习了http://onevcat.com/上的内容写的笔记,并自己动手操作了一下. 已经排好版了,懒 ...

  7. Groovy学习()起步

    安装Groovy 在Windows环境下安装Groovy 下载安装包,傻瓜安装,设置环境目录,就这样搞定. 另外还需要安装Java并且设置JAVA_HOME环境变量. 两分钟搞定. 使用groovys ...

  8. PHP——面向对象

    <body> <?php //类调用用:: //对象调用用-> class Dog1//定义类 { //成员属性(变量) var $name; var $age; var $p ...

  9. 第二百六十三节,Tornado框架-基于正则的动态路由映射

    Tornado框架-基于正则的动态路由映射 1.在路由映射条件里用正则匹配访问路径后缀2.给每一个正则匹配规则(?P<设置名称>)设置一个名称,3.在逻辑处理的get()方法或post() ...

  10. 第二百六十一节,Tornado框架模板引擎本质

    Tornado框架模板引擎本质 只需要了解一下即可 本篇就来详细的剖析模板处理的整个过程. 上图是返回给用户一个html文件的整个流程,较之前的Demo多了绿色流线的步骤,其实就是把[self.wri ...