信号是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. 【LeetCode】90. Subsets II (2 solutions)

    Subsets II Given a collection of integers that might contain duplicates, S, return all possible subs ...

  2. 【LeetCode】100. Same Tree (2 solutions)

    Same Tree Given two binary trees, write a function to check if they are equal or not. Two binary tre ...

  3. 在CentOS上安装Git(转)

    CentOS的yum源中没有git,只能自己编译安装,现在记录下编译安装的内容,留给自己备忘. 确保已安装了依赖的包 yum install curl yum install curl-devel y ...

  4. Redis全方位讲解--主从复制(转载)

    前言 前面介绍了redis持久化和容灾备份,这篇会介绍redis主从复制和redis持久化在主从复制中的一些应用.因为本人没有那么多服务器或机器,所以这里主要介绍下如何在docker容器中搭建主从复制 ...

  5. springboot 1.5.10 +kotlin 1.2.20 解决 java.lang.ClassNotFoundException: kotlin.reflect.KotlinReflectionInternalError

    使用http://start.spring.io/ 下载的 项目 跑单元测试 报 java.lang.ClassNotFoundException: kotlin.reflect.KotlinRefl ...

  6. DevExpress中chartControl中实现统计图功能

    public partial class Form1 : DevExpress.XtraEditors.XtraForm { public Form1() { InitializeComponent( ...

  7. CentOS 7 下挂载NTFS文件系统并实行开机自动挂载

    CentOS 7 下想要挂载NTFS的文件系统该怎么办呢? 我们需要一个NTFS-3G工具,并编译它之后在mount就可以了,就这么简单. 首先要进入官网下载NTFS-3G工具 http://www. ...

  8. SignalTap ii的使用

    1.实现原理 SignalTap II获取实时数据的原理是在工程中引入Megafunction中的ELA(Embedded Logic Analyzer),以预先设定的时钟采样实时数据,并存储于FPG ...

  9. 微服务实战-使用API Gateway

    当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互.在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点.在微服务架构中,每一个微服务暴露一组细粒度的服务提供点.在本篇文章中,我 ...

  10. vim 创建文件自动生成头部注释

    知识点: 1. autocmd命令: 当读写一个文件时,自动执行指定的命令; 2. autocmd event: BufNewFile 当文件不存在时开始写文件; 3. exec命令 execute命 ...