码迷,mamicode.com
首页 > 其他好文 > 详细

bash信号处理

时间:2015-03-15 19:57:17      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:bash   信号   

bash处理信号

发送信号

kill

格式:kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...

可以发送进程号为pid的进程,也可以发送作业号为jobspec的进程

sigspec可以是信号数字也可以是信号名,信号名可以不带SIG

kill命令默认发送SIGTERM信号,接收到SIGTERM信号的进程会结束运行

终端中,Ctrl+C给前台进程发送INT信号,进程退出,退出状态为130,为信号编号加128


处理信号

建立信号回调函数

trap cmd signal1 signal2 signal3 ...

cmd可以是一系列命令或一个函数的名字,也可以为空,将执行默认行为


Shell脚本编程感兴趣的信号

信号

对应ID

行为

含义

SIGHUP

1

Term

Hangup detected on controlling terminal

SIGINT

2

Term

Interrupt from keyboard

SIGQUIT

3

Core

Quit from keyboard

SIGKILL

9

Term

Kill signal

SIGALRM

14

Term

Timer signal

SIGTERM

15

Term

Termination signal


Shell脚本有个假的信号0,在退出时产生,可以为这个信号定义函数使脚本结束时执行某些操作


多次为同一个信号定义操作,以最后一次为准


忽略信号

在trap中使用空字符串或冒号就行。

trap ‘ ‘ 2 //注意引号的存在


设置定时器

其实就是设置一个后台的子进程在睡眠一定事件后给本进程发送SIGALARM信号。

方式:sleep $time && kill -s 14 $$ &

此命令产生bash子进程后,由bash子进程产生sleep进程。

在注销定时器时注意杀死进程的顺序,贸然杀了父进程,就找不到子进程了哦


本文出自 “重剑无锋” 博客,请务必保留此出处http://qianyang.blog.51cto.com/7130735/1620558

bash信号处理

标签:bash   信号   

原文地址:http://qianyang.blog.51cto.com/7130735/1620558

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!