当前位置: 首页 > news >正文

Linux kill命令给进程发信号

Linux系统中进程之间可以通过信号进行通信。kill命令可以通过进程ID(即PID)给进程发信号,格式示例如下。当直接使用“kill <pid>”命令时,默认发送SIGTERM信号。

kill -<signal> <pid>

进程信号如下:

信号名称

描述

SIGHUP    

1  

Hangup (POSIX)                  

挂起

SIGINT    

2  

Interrupt (ANSI)                

中断;e.g.终端键入DELETE或ctrl+c按键

SIGQUIT   

3  

Quit (POSIX)                    

结束运行;e.g.终端键入ctrl+\按键

SIGILL    

4  

Illegal instruction (ANSI)      

非法指令

SIGTRAP   

5  

Trace trap (POSIX)              

Trace追踪

SIGABRT   

6  

Abort (ANSI)                    

abort()异常终止

SIGBUS    

7  

BUS error (4.2 BSD)             

硬件故障

SIGFPE    

8  

Floating-point exception (ANSI) 

浮点异常

SIGKILL   

9  

Kill, unblockable (POSIX)       

无条件终止

SIGUSR1   

10 

User-defined signal 1 (POSIX)   

用户定义信号1

SIGSEGV   

11 

Segmentation violation (ANSI)   

段错误

SIGUSR2   

12 

User-defined signal 2 (POSIX)   

用户定义信号2

SIGPIPE   

13 

Broken pipe (POSIX)             

管道破裂

SIGALRM   

14 

Alarm clock (POSIX)             

超过alarm()设置的时间

SIGTERM   

15 

Termination (ANSI)              

尽可能终止

SIGSTKFLT 

16 

Stack fault                     

栈异常,默认终止进程

SIGCHLD   

17 

Child status has changed (POSIX)

子进程状态改变

SIGCONT   

18 

Continue (POSIX)                

使暂停进程继续运行

SIGSTOP   

19 

Stop, unblockable (POSIX)       

无条件停止运行,但不终止

SIGTSTP   

20 

Keyboard stop (POSIX)           

停止或暂停,但继续在后台运行;e.g.ctrl+z

来看看kill命令的使用示例,如下图,“./simple_test &”后台运行程序,ps l命令可以看到该程序的PID=5482,“kill 5482”给该进程发送SIGTERM信号尽可能终止,程序被终止成功。

下面示例是./执行程序后键入ctrl+z按键,使程序暂停但继续在后台运行。此时发送SIGTERM信号尽可能终止该进程失败,发送SIGKILL信号无条件终止进程成功。从中也可以看出两个信号的区别。

备注:图中"kill -SIGKILL 5517"等同于"kill -9 5517",前者对读者更友好一点。

使用kill命令需要注意权限问题。上面两个例子,bash所属用户与程序进程所属用户相同,所以可以直接发送信号。例如下图,普通用户给root用户PID=1的进程发送信号失败,提示"Operation not permitted"不允许操作。当然,最简单直接的就是切换为root用户,你想kill哪个进程就kill哪个进程。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 寻找二叉树中两个节点的最低公共祖先
  • 2024小学生古诗文大会暑期备考:吃透历年真题和知识点(持续)
  • 简单的docker学习 第1章 docker 概述
  • springcloud loadbalancer nacos无损发布
  • 【数据结构】线段树
  • 临床数据科学中如何用R来进行缺失值的处理(上)
  • 24/8/6算法笔记 不同核函数
  • 读友好的缓存淘汰算法
  • Go语言依赖管理:如何配置和恢复Go模块镜像
  • 【python】Linux升级版本
  • python 装饰器记录函数用时
  • stm32应用、项目
  • RNN循环网络层
  • PostgreSQL(二十五)PG_FDW的使用
  • SpringMVC快速学习
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • Java 多线程编程之:notify 和 wait 用法
  • Java多态
  • Lucene解析 - 基本概念
  • MySQL主从复制读写分离及奇怪的问题
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • quasar-framework cnodejs社区
  • REST架构的思考
  • vue2.0项目引入element-ui
  • vue-cli在webpack的配置文件探究
  • 从零开始学习部署
  • 思考 CSS 架构
  • 学习ES6 变量的解构赋值
  • python最赚钱的4个方向,你最心动的是哪个?
  • # Redis 入门到精通(一)数据类型(4)
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ###C语言程序设计-----C语言学习(6)#
  • #define 用法
  • #pragma data_seg 共享数据区(转)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (42)STM32——LCD显示屏实验笔记
  • (Forward) Music Player: From UI Proposal to Code
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (实战篇)如何缓存数据
  • (四)Linux Shell编程——输入输出重定向
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转载)(官方)UE4--图像编程----着色器开发
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .Mobi域名介绍
  • .NET BackgroundWorker
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NET正则基础之——正则委托
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑