信号是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. PostgreSQL远端访问

    PostgreSQL默认的理念是运行在本地地址且不允许外部访问的. 如果想通过Navicat for postgreSql这种优秀的第三方软件访问需要做出如下修改: 一.启动在外部可访问的地址上 编辑 ...

  2. Android的学习之路(四)项目中清单文件的学习和android中经常使用的显示单位

    1.所谓的清单文件就是项目中的AndroidManifest.xml文件.这个文件但是有大用处的.比方:app的名字,图标.app支持的版本号app的包名等等.以下我就介绍下这个清单文件的各个參数的作 ...

  3. SQL Prompt几个快捷键

    推荐一个小插件,SQL Prompt,配合Microsoft SQL Server Management Studio,使用起来非常方便,同时再加上以下几个快捷键: (1)ctrl+5或F5,运行代码 ...

  4. 让 Node.js 支持 ES6 的语法

    为了让 Node.js 支持 ES6 的语法, 需要使用 Babel. 安装 es-checker 在使用 Babel 之前 , 我们先检测一下当前 node 对 es6 的支持情况. 在命令行下执行 ...

  5. 详解登录认证及授权--Shiro系列(一)

    Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密.Apache Shiro 的首要目标是易于使用和理解.安全有时候是很复杂的,甚至是痛苦的, ...

  6. 解决Eclipse无法打开“Failed to load the JNI shared library”

    这是因为JDK配置错误所导致的现象. 一般说来,新购笔记本会预装64位的windows系统,而在网上下载软件时,32位会优先出现在页面中(现在来说是这个情况,但我认为未来64位会越来越普及). 如果你 ...

  7. Java计算两个字符串日期之间的天数差

    Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException { String a = ...

  8. 关于64位 windows&linux双系统引导问题

    换了台本子win7 64位,抽空做个双系统,装了下linux. 遇到开机问题:进linux可以正常使用,进win7花屏死机,初步估计是grub(此时的boot sector位grub)的问题,启动器被 ...

  9. Mac OS下配置PHP Nginx PHP-FPM

    首先需要安装homebrew, 不赘述了 php-fpm php-fpm是mac下自带的软件, 而且兼容不同的PHP版本, 不用额外安装, 但是fpm是需要配置的, 在/private/etc下有个模 ...

  10. Logstash日志字段拆分grok

    参考和测试网站:http://grokdebug.herokuapp.com 例如:test-39.dev.abc-inc.com Mon Apr 24 13:53:58 CST 2017 2017- ...