trap和signal

在Linux上进行shell脚本开发,不可避免的需要和进程信号(signal)打交道,如杀掉(kill)、终止(terminate)、进程退出时(正常退出或异常退出)做一些操作等。

以下几点是在开发中常会碰到的情形。

1. 不论当前进程如何退出(执行完操作正常退出、被kill掉等),都希望进行一些操作(常常是做一些清理,清理掉该进程生成的一些中间数据)。可在脚本中添加以下代码

trap '' 0

2. 调起一个进程时,希望其在后台运行,这样可以保证后续的进程无须等待其完成便可被执行。可用&将进程抛至后台。此类进程会忽略掉信号INT和QUIT。

3. 在一个Terminal(如SSH的一个窗口)的命令行中调用一个进程,在该窗口被关掉时希望该进程依旧可以正常执行。以nohup的形式调用该进程即可。

nohup a.ksh

4. Ctrl-C与kill -INT的区别

The difference between sending INT using kill -INT pid and Ctrl-C is that Ctrl-C sends INT to the process group (all processes which are called by current pid)

5. 子进程并不会继承父进程的信号处理逻辑。

更多相关的资料

1. http://mywiki.wooledge.org/SignalTrap
2. http://docs.oracle.com/cd/E19253-01/816-5165/ksh-1/index.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值