在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
分享到:
相关推荐
Trap命令的基本语法是:`trap [ 'command' ] [signal]`,其中signal可以是要捕获的信号的名字或编号,command是捕获到指定的信号之后所要执行的命令。 在Linux系统中,信号可以用来报告很多信息,如错误的系统调用...
- **信号驱动IO(Signal-driven IO)**:通过信号通知完成I/O操作。 - **异步IO(Asynchronous IO)**:提交I/O请求后,由操作系统负责完成整个I/O操作,并在完成后通知程序。 **2. 同步与异步的区别** - **同步IO**...
trap ( 'USR1' ) do logger . info 'hello!' end 然后: kill -USR1 我们得到的是: log writing failed. can't be called from trap context 看起来很熟悉? 然后tricky_signals是您的朋友! 安装 将此行添加...
单原子在磁光阱和远失谐光学偶极阱之间的转移,何军,王婧,Based on our work of trapping single cesium atoms in a large-magnetic-gradient vapour-cell magneto-optical trap (MOT), a remarkable improvement ...
signame ( signo ) } " #=> "hello signal INT"}方法Signal.trap(sig,command){| signo | 堵塞 } 信号清单Signal.signame(忽略) Kernel.trap(sig,command){| signo | 堵塞 }安装写在/mruby/build_config.rb...
`signal()`函数简单但存在兼容性问题,而`sigaction()`函数则更强大,可以设置信号的处理方式、掩码和传递信息。 3. **信号掩码**: 信号掩码是当前进程不能处理的信号集合。通过`sigprocmask()`函数,我们可以...
dsPIC30F系列是Microchip的增强型数字信号控制器(Digital Signal Controller),其性能介于传统的8位和32位微控制器之间,特别适合需要高效计算能力的嵌入式应用,如电机控制、电源管理和其他实时控制系统。...
- **基本语法**:`trap 'command' signal1 signal2 ... signalN` 其中,`command`是指定的处理动作,`signal1`, `signal2`, ..., `signalN`是需要捕获的信号列表。 - **伪信号**:在Shell调试过程中,有三种特殊...
狐狸陷阱随附的博客文章 Fox Trap是基于无线网格的命令和控制基础结构,用于定位移动恶意接入点。 最初的想法是将便宜的无线SOC植入无线影院中,该影院可以检测多个恶意AP并接收命令。 每个通过让任务同步运行(例如...
锁 简单锁定外壳脚本。 从开始. lock . lock以避免同时执行。 #! /bin/sh ....Usage: lock [-s ] [-i] [-t] [-e] ... -e (default) Trap EXIT signal -h Show this help message 安装 sudo cp lock /usr/local/bin/lock
二是由`trap`指令引起的,这类陷入通常用于执行系统调用,系统会通过`signal`来通知用户态程序发生了特定事件。 总的来说,本章内容详细阐述了UNIX系统如何处理各种类型的陷入,包括核心态和用户态的差异,以及对...
这项技术的关键在于磁场和激光的精确控制,使得原子在空间中的位置和运动状态可以被精确地操纵和测量。 3. 光栅扩展腔二极管激光器:这是一种用于冷却/捕获和再泵浦激光的技术,用于准备和操纵单个原子。这种激光器...
#### 三、使用`kill`命令和`trap`语句实现进程间通信 在Unix系统中,进程可以通过发送信号来与其他进程通信。`kill`命令用于向进程发送信号,而`trap`语句则用于处理这些信号。 - **`kill`命令**:`kill`命令可以...
书中还会详细讲解一些高级主题,例如函数库、文件包含、进程控制、陷阱(trap)处理和信号(signal)。这些功能使得Shell脚本能实现更复杂的任务,如后台运行程序、监控系统状态、定时任务和守护进程等。理解并熟练...
05 Step Trap.zip 5.7 kB 杭州泰富机械有限公司自动成型机光洋SN64+维纶MT510TV触摸屏程序.rar 113 kB 自动灌装.rar 9.4 kB Access data on a Zumbach ODAC34 with a DL06 PLC.zip 26.2 kB ALARMS_2DIGIT_CODES.ZIP ...
事件机器::IRC::服务器 EventMachine::IRC::Server 为 Ruby 的 EventMachine 提供了一个基本的... Signal.trap("INT") { EventMachine.stop } Signal.trap("TERM") { EventMachine.stop } srvr = EventMachine::start
1. 操作系统中的进程管理:在给定内容中,"wait", "trap", "mutex", "signal", "P1P2P3P4" 等术语通常与进程同步和通信相关。例如,“mutex”是一种用于控制对共享资源访问的互斥锁,以避免资源冲突。 2. 内存管理...
Digital signal processing technology is used in DSP to test the amplitude-frequency characteristic, and the test results are showed on computer monitor by the SCI of DSP, the amplitude-frequency ...
- 软件中断由INTR K、TRAP K和RESET触发。 3. 内部总线结构: - TMS320C54X有8条16位主总线,包括1条程序总线、3条数据总线和4条地址总线。 4. 内存管理: - MEMROY定义系统硬件资源,如存储器类型和地址范围。...