2019-04-19_Linux_trap命令

trap 的使用

1、运行格式

trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名。
trap command signal
它有三种形式分别对应三种不同的信号回应方式。

第一种:
trap "commands" signal-list
当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令。

第二种:
trap signal-list
trap不指定任何命令,接受信号的默认操作,默认操作是结束进程的运行。

第三种:
trap " " signal-list
trap命令指定一个空命令串,允许忽视信号,我们用到的就是这一种。
※请记住,脚本程序通常是以从上到下的顺序解释执行的,所以必须在你想保护的那部分代码以前指定trap命令。
信号量详细列表可以trap -l即可显示

名称      默认动作            说明
SIGHUP    终止进程            终端线路挂断
SIGINT    终止进程            中断进程
SIGQUIT   建立CORE文件        终止进程,并且生成core文件
SIGILL    建立CORE文件        非法指令
SIGTRAP   建立CORE文件        跟踪自陷
SIGBUS    建立CORE文件        总线错误
SIGSEGV   建立CORE文件        段非法错误
SIGFPE    建立CORE文件        浮点异常
SIGIOT    建立CORE文件        执行I/O自陷
SIGKILL   终止进程            杀死进程
SIGPIPE   终止进程            向一个没有读进程的管道写数据
SIGALARM  终止进程            计时器到时
SIGTERM   终止进程            软件终止信号
SIGSTOP   停止进程            非终端来的停止信号
SIGTSTP   停止进程            终端来的停止信号
SIGCONT   忽略信号            继续执行一个停止的进程
SIGURG    忽略信号            I/O紧急信号
SIGIO     忽略信号            描述符上可以进行I/O
SIGCHLD   忽略信号            当子进程停止或退出时通知父进程
SIGTTOU   停止进程            后台进程写终端
SIGTTIN   停止进程            后台进程读终端
SIGXGPU   终止进程            CPU时限超时
SIGXFSZ   终止进程            文件长度过长
SIGWINCH  忽略信号            窗口大小发生变化
SIGPROF   终止进程            统计分布图用计时器到时
SIGUSR1   终止进程            用户定义信号1
SIGUSR2   终止进程            用户定义信号2
SIGVTALRM 终止进程            虚拟计时器到时

2.我一开始思路是lscore目录文件grep是否有文件名,然后判断字符串,发现不好用,因为没有文件的时候字符串不是空,是一个换行。但是在这个地方用到了判断字符串是否为空。mark一下

if [ -n $string ] 判断string非null
if [ -z $string ] 判断string是null

3.子进程获取父进程进程号

进程获取自己进程号 $$
进程获取父进程号 $PPID

4.杀死所有子进程

因为如果父进程执行完毕后,检测core的进程都没有发现core,所有子进程还存在,这就是传说中的僵尸进程。所以要杀死父进程所有子进程。
kill -9 0——杀死脚本自己及衍生出来的子进程

然后最后贴上我的源码:

callcore.sh
#! /bin/bash
#调用coretest.sh 检测core

trap 'echo trap core!!!;exit'  3
echo "father pid is $$"
./coretest.sh
while true
do
    sleep 5
done

coretest.sh
#! /bin/bash
#
#this shell script is designed to catch core,if corehappens,will 
#send the father to exit

echo "sub pid is $$"
echo "father pid is $PPID"

#sleep 2
#kill -3 $PPID

#rm -r corelog
while true
do
    files=`ls/home/doujinye/coresave/ | grep 'core'| grep -v "^$" | wc -l`
    echo "files is$files"
    if [ $files -gt 0]
    then
       echo "not empty"
       kill -3 $PPID;exit 1
    fi
    sleep 5
done
exit 1
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容