信号是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. js 按enter键提交信息

    http://codeigniter.org.cn/forums/thread-10868-1-1.html function keydown(e) {     var currKey=0,e=e|| ...

  2. Faster RCNN原理分析 :Region Proposal Networks详解

    博主的论文笔记: https://blog.csdn.net/YZXnuaa/article/details/79221189 很详细! 另外,关于博主的博客很多拓展知识面: 120篇 深度学习23篇 ...

  3. 使用while循环和伪列的存储过程

    使用while循环和伪列的存储过程如下: USE [JointFrame2] GO /****** Object: StoredProcedure [dbo].[Proc_enterprise_uni ...

  4. union共用体的对齐

    union DATE { char a; ]; double b; }; DATE max; cout<< sizeof(max) << endl; 这个问题很好回答,并且我把 ...

  5. 为什么在c语言中使用gets函数是危险的

      If you have code like this: char s[10]; gets( s ); and you type in more than 10 characters when th ...

  6. ubuntu apt-get方式安装与卸载

    在ubuntu终端中安装软件: 安装软件 apt-get install softname1 softname2 softname3……卸载软件 apt-get remove softname1 so ...

  7. Rigidbody-ClosestPointOnBounds测试

    可见是Collider的Bounds

  8. I2C总线协议

     1.I2C协议   2条双向串行线,一条数据线SDA,一条时钟线SCL.   SDA传输数据是大端传输,每次传输8bit,即一字节.   支持多主控(multimastering),任何时间点只能有 ...

  9. dataGridViewX操作

    private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e) { ...

  10. 【Android】15.1 后台任务和前台任务

    分类:C#.Android.VS2015: 创建日期:2016-02-29 一.简介 Android的活动(Activities)可以有多种状态,具体取决于用户的行为以及对操作系统的要求.虽然Acti ...