信号是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. EMQTT benchmark测试

    #-c 最大的客户端数据, -i:时间间隔 -t:订阅主题 -q:订阅方式 ./emqtt_bench_sub -c 50000 -i 10 -t bench/%i -q 2 notice: You ...

  2. linux 源码安装 Nginx

    1.安装前环境准备安装make:# yum -y install gcc automake autoconf libtool make安装g++:# yum install gcc gcc-c++ 2 ...

  3. appframework学习--nav的使用说明

    app-framework学习--nav的使用说明: 语法: <nav id="mynav" style="background-image:url(../imag ...

  4. Spark SQL and DataFrame Guide(1.4.1)——之DataFrames

    Spark SQL是处理结构化数据的Spark模块.它提供了DataFrames这样的编程抽象.同一时候也能够作为分布式SQL查询引擎使用. DataFrames DataFrame是一个带有列名的分 ...

  5. lintcode---线段树查询||(区间元素个数)

    对于一个数组,我们可以对其建立一棵 线段树, 每个结点存储一个额外的值 count 来代表这个结点所指代的数组区间内的元素个数. (数组中并不一定每个位置上都有元素) 实现一个 query 的方法,该 ...

  6. CentOS 之 Supervisor

    CentOS 之 Supervisor supervisor是一个Linux上用来管理程序后台运行的工具,支持程序的自启动,挂掉重启,日志等功能.可配置程序随系统启动,并支持挂掉重启,增强程序稳定性. ...

  7. 动态时间规整-DTW算法

    作者:桂. 时间:2017-05-31  16:17:29 链接:http://www.cnblogs.com/xingshansi/p/6924911.html 前言 动态时间规整(Dynamic ...

  8. Informix 配置选项

    下表列出了用于改善数据库性能的附加选项.如果选择在 onconfig 配置文件中进行更改,则需要重新启动 Informix 通用服务器.可以在 Informix 服务器处于联机或脱机状态时编辑 onc ...

  9. IOS基于XMPP协议开发--XMPPFramewok框架(一):基础知识

    最近蘑菇街团队的TT的开源,使我对im产生了兴趣,然后在网上找到了XMPPFramework进行学习研究, 并写了以下系列教程供大家参考,有写的不对的地方,请大家多多包涵指正. 目录索引 IOS基于X ...

  10. 分享一个mysql 复杂查询的例子

    发布:脚本学堂/MySQL  编辑:thebaby   2013-08-23 09:37:37  [大 中 小] 有关mysql复杂查询的一个例子,正在学习mysql的朋友,可以作为一个参考. 在my ...