信号类型

信号:信号是在软件层次上对中断机制的一种模拟,通过给一个进程发送信号,执行相应的处理函数

进程可以通过三种方式来响应一个信号:

1.忽略信号,即对信号不做任何处理,其中有两个信号不能忽略: SIGKILL 及 SIGSTOP

2.捕捉信号

3.执行缺省操作, Linux 对每种信号都规定了默认操作

Linux 究竟采用上述三种方式的哪一个来响应信号呢? 取决于传递给响应的 API 函数

Linux 支持的信号有

CoreDump(核心转储):

当程序运行过程中异常退出时,内核把当前程序在内存状况存储在一个 core 文件中,以便调试

执行命令 ulimit -c 如果是 0 则没有开启, 也不会生成 core dump 文件,可通过 ulimit -c unlimited 命令临时开启 core dump 功能, 只对当前终端环境有效,如果想永久生效,可修改/etc/security/limites.conf 文件,添加一行 "* soft core unlimited"默认生成的 core 文件保存在可执行文件所在的目录下,文件名为 core

如果想修改 core 文件保存路径,可通过修改内核参数: echo "/tmp/corefile-%e-%p-%t" > /proc/sys/kernel/core_pattern则文件名格式为 core-命名名-pid-时间戳

Linux 支持两种信号:

一种是标准信号,编号 1-31,称为非可靠信号(非实时),不支持队列,信号可能会丢失,比如发送多次相同的信号,进程只能收到一次,如果第一个信号没有处理完,第二个信号将会丢弃

一种是扩展信号,编号 32-64,称为可靠信号(实时),支持队列,发多少次进程就可以收到多少次

发送信号一般有两种情况:

一种是内核检测到系统事件,比如键盘输入 CTRL+C 会发送 SIGINT 信号

另一种是通过系统调用 kill 命令来向一个进程发送信号

kill命令

kill 命令发送信号给进程

参数:

-s # 信号名称

-n # 信号编号

-l # 打印编号 1-31 信号名称

建议使用kill -15 进程ID,不要使用kill -9 进程ID,因为可能会导致程序异常

trap命令

trap命令定义 shell 脚本在运行时根据接收的信号做相应的处理

命令格式:

trap [-lp] [ [ arg ] sinal_spec ... ]

-l #打印编号 1-64编号信号名称

arg #捕获信号后执行的命令或者函数

signal_spec #信号名或编号

一般捕捉信号后,做以下几个动作:

1.清除临时文件

2.忽略该信号

3.询问用户是否终止脚本执行

示例

1.按 CTRL+C 不退出循环

没有忽略CTRL+Z

2.循环打印数字,按CTRL+C 退出,并打印退出提示

3.调用函数,让用户选择是否终止循环

Shell-12-linux信号的更多相关文章

  1. Shell编程之Linux信号及信号跟踪

    一.Linux信号 1.什么是信号? Linux信号是由一个整数构成的异步消息,它可以由某个进程发给其他进程,也可以在用户按下特定键发生某种异常事件时,由系统发给某个进程. 2.信号列表 [root@ ...

  2. shell在linux里摇摇晃晃

    1.shell不只是一种解释器,还是一种编程工具 查看系统中可用的shell,linux默认使用 Bash Shell [root@localhost ~]# cat /etc/shells /bin ...

  3. xenomai内核解析之信号signal(一)---Linux信号机制

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有错误,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 目录 1. Linux信号 1.1注册信号处理函数 ...

  4. Linux信号类型说明

    说明 在Linux系统开发中经常要使用到信号来实现异步通知机制.而在Linux系统中信号有很多种,也不用全部记住,学习几种常见的信号,学会使用即可:当然也要知道用哪种方式能够发送这样的信号. 查看li ...

  5. Linux信号基础

    Linux信号基础   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux进程基础一文中已经提到,Linux以进程为单位来 ...

  6. Linux信号(signal) 机制分析

    Linux信号(signal) 机制分析 [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核 ...

  7. 用shell实现linux系统应用文件清理工具

    用shell实现linux系统文件清理工具 1:原始需求 在系统运维中,会产生大量应用备份文件.落地文件等,这些文件需要定时清理.一般来说,都是使用crontab 拉起一个脚本来清理.类似这样: 30 ...

  8. 非常好的一篇对linux信号(signal)的解析 (转载)【转】

    转自:https://blog.csdn.net/return_cc/article/details/78845346 Linux信号(signal) 机制分析 转载至:https://www.cnb ...

  9. Linux 信号:signal 与 sigaction

    0.Linux下查看支持的信号列表: france@Ubuntux64:~$ kill -l ) SIGHUP ) SIGINT ) SIGQUIT ) SIGILL ) SIGTRAP ) SIGA ...

  10. Linux信号机制

    Linux信号(signal) 机制分析 [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核 ...

随机推荐

  1. 基于uni-app全端弹框组件uaPopup「兼容h5+小程序+app端|nvue」

    uniapp兼容多端自定义模态弹框组件UAPopup ua-popup 一款轻量级的uniapp自定义弹窗组件.汇集了android.ios和微信弹窗效果(msg消息.alert提示框.dialog对 ...

  2. XML:xml常用注解

    @XmlRootelement 指定根目录. //标注在实体类上 @XmlRootElement(name = "xmlEntity") public class XmlEntit ...

  3. ESP32智能配网笔记

    基于ESP-IDF4.1 #include <string.h> #include <stdlib.h> #include "freertos/FreeRTOS.h& ...

  4. OSSBrowser windows使用

    目录 1. 安装 2. 启动OSSBrowser并登录 1. 安装 下载地址:github或官方 2. 启动OSSBrowser并登录 ossbrowser安装包下载到本地解压之后,点击oss-bro ...

  5. WIN10技巧

    1.快速打开"开始---自动启动"文件夹:开始--支行--shell:startup 2

  6. C语言:字符编码

    C语言是 70 年代的产物,那个时候只有 ASCII,各个国家的字符编码都还未成熟,所以C语言不可能从底层支持 GB2312.GBK.Big5.Shift-JIS 等国家编码,也不可能支持 Unico ...

  7. 手把手0基础Centos下安装与部署paddleOcr 教程

    !!!以下内容为作者原创,首发于个人博客园&掘金平台.未经原作者同意与许可,任何人.任何组织不得以任何形式转载.原创不易,如果对您的问题提供了些许帮助,希望得到您的点赞支持. 0.paddle ...

  8. 小师妹学IO系列文章集合-附PDF下载

    目录 第一章 IO的本质 IO的本质 DMA和虚拟地址空间 IO的分类 IO和NIO的区别 总结 第二章 try with和它的底层原理 简介 IO关闭的问题 使用try with resource ...

  9. PHP如何接收json数据

    以前一直在写一些网站,很少涉及到接口的东西.最近公司在做一个平台,需要往接口上发送json数据.闲话少叙,直接上干货. 在php中可以通过如下方式获取: file_get_contents(" ...

  10. [HNOI2008]GT考试 题解

    这题比较难搞.考虑设计状态:\(f_{i,j}\) 表示当前考虑到 \(X_i\) 位,且 \(X\) 的后 \(j\) 位刚好与 \(A\) 列匹配时的方案数.最终答案为 \(\sum_{i=0}^ ...