linux 的信号机制

信号是Linux中非常重要的部分。
信号机制是进程间相互传递消息的一种方法,全称为软中断信号。信号可以看作进程控制的一部分。

基本概念

signal用来通知进程发生了异步事件,进程之间可以互相通过系统调用kill发送软中断信号。但是注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。

信号的处理方法:忽略、捕捉和默认动作

忽略信号,大多数信号可以使用这个方式来处理,但是有两种信号不能被忽略(分别是 SIGKILL和SIGSTOP)。因为他们向内核和超级用户提供了进程终止和停止的可靠方法,如果忽略了,那么这个进程就变成了没人能管理的的进程,显然是内核设计者不希望看到的场景。
捕捉信号,需要告诉内核,用户希望如何处理某一种信号,说白了就是写一个信号处理函数,然后将这个函数告诉内核。当该信号产生时,由内核来调用用户自定义的函数,以此来实现某种信号的处理。
系统默认动作,对于每个信号来说,系统都对应由默认的处理动作,当发生了该信号,系统会自动执行。不过,对系统来说,大部分的处理方式都比较粗暴,就是直接杀死该进程。

linux支持的信号列表:

用命令kill -l可以查看linux下的所有信号:

SIGHUP:1号信号,Hangup detected on controlling terminal or death of controlling process(在控制终端上挂起信号,或让进程结束)

SIGINT:2号信号,Interrupt from keyboard(键盘输入中断,ctrl + c )

SIGQUIT:3号信号,Quit from keyboard(键盘输入退出,ctrl+ | )

SIGABRT:6号信号,Abort signal from abort(3)(非正常终止,double free)

SIGKILL:9号信号,Kill signal(杀死进程信号,linux规定进程不可以忽略这个信号)

综上所述,kill -9中,9代表的就是9号信号,带有强制执行的意思,它告诉进程:“无论你现在在做什么,立刻停止”。

总用kill -9杀进程,知道9代表什么吗?相关推荐

  1. kill进程_你还在使用kill -9 杀进程吗?从原理谈避免踩雷!

    你要"跑路"了吗? 只要你用过 UNIX/LINUX ,我敢打赌你大概率执行过这样一条命令,也就是俗话说的"杀进程": kill -9 执行它,是不是如同执行以 ...

  2. PostgreSQL 切勿kill -9去杀进程

    熟悉Oracle的人可能会去经常使用kill -9杀进程,因为有的时候使用SQL命令去杀进程,一些进程的状态只是会被置为"killed"状态,其锁定的资源仍然没有释放,可能会收到提 ...

  3. 还有kill -9杀不掉的进程?kill命令详解

    我们很多人对kill -9 非常熟悉,在工作中也经常用到.特别是你去重启服务的时候.但是所有的服务都能用kill -9来处理吗?kill -9能杀掉所有的进程吗? 首先我们来了解一下 kill -n ...

  4. Linux查看进程ps -ef、杀进程kill

    查看某个服务的进程 例如mysql: ps -ef|grep mysql (ps aux 是用BSD的格式来显示Java进程 显示的项目有: USER        PID %CPU %MEM    ...

  5. linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...

    1.说出 10 个 linux 常用的指令 1) ls 查看目录中的文件 2)cd /home 进入 '/ home' 目录:cd .. 返回上一级目录:cd ../.. 返回上两级目录 3)mkdi ...

  6. Linux下kill -9杀不死进程或杀死又自动启动,解决

    问题描述 在ubuntu下 kill -9 杀死进程时候发现杀不死,或者是杀死了立刻又重启. 原因是该进程的父进程还在,所以会杀死进程后又自动启动了,看起来是我们没kill掉一样. 解决方法 ps - ...

  7. Linux:使用ps-grep-awk批量kill杀进程

    scheduler_center.py 为我要杀掉的进程 # ps -ef|grep scheduler_center.py root 12013 python3 scheduler_center.p ...

  8. kill -9杀不掉进程的时候解决方法

    参考链接 kill -9杀不掉进程,有可能是因为该进程是某个进程的子进程,这样的话杀不掉.比如,想杀死226473,直接kill -9 226473不行,需要先查看其父进程: cd /proc/226 ...

  9. java通过进程名称杀进程_根据进程名杀死进程 -kill进程名

    知道进程名怎样杀死这个进程. #pkill 进程名 或是 #killall 进程名 的确这个两个命令都能做到这些,而且我们平时一般知道进程名需要杀死进程的时候也都是用的这两个命令.可是他叫我用kill ...

最新文章

  1. 全国大学生数学建模竞赛中,哈工大被禁用MATLAB
  2. 使用思科3640实现不同网段通讯
  3. SQL语言基本语句介绍
  4. 横线-文字-横线的html-css布局
  5. C/C++常见库函数实现(memcpy、memset、 strcpy)
  6. [转载]ASP.NET开发经验积累
  7. sublime text3设置空格和tab键
  8. 关于MySQL latch争用深入分析与判断
  9. DPDK - Symmetric Receive-side Scaling
  10. 我是如何学习Android源码的
  11. 计算机桌面墙纸更换,电脑系统教程:win7桌面壁纸怎么换
  12. 罗马数字转化阿拉伯数字
  13. it试用评估_it试用期员工自我评价
  14. CurrentThread
  15. 【懒懒的Python学习笔记二】
  16. 项目实训第一周第三篇
  17. 微软Azure动手实验营4月课程预告
  18. 零知识证明之什么是QAP?什么是P/NP、NP完全问题(NPC问题)、NP hard问题?多项式时间
  19. ldo低压差线性稳压器电路解析
  20. 初步中的初步了解DFS以及DFT

热门文章

  1. MeterSphere用户访谈录:网鱼网咖
  2. 11·9 消防日 | 云计算在智慧消防中的作用
  3. 央行工作论文:区块链能做什么、不能做什么?
  4. Android的,iOS的,PHP的,大数据的,Java的,web前端的,C++,Python等干货分享
  5. 又一起运营商机房大楼失火,注意机房安全啊
  6. ansible 远程windows
  7. 深度学习示功图智能识别思路分享
  8. 西安科技大学 通信与计算机,西安工业大学与西安科技大学的通信哪个好?
  9. Java开发指导记录表_常操:Java开发常用操作记录
  10. 前方高能:人工智能“进军”互联网市场,企业该如何接招?