Linux---kill及kill -9的用法及如何实现进程的优雅退出

Basilisk库教程 要在仿真中执行模块,其调度由Basilisk的[Process]和[Task]容器控制。BSK[Task]包含一系列模块,这些模块都以相同的更新频率执行。一个[Process]本质上是一个任务组,可以包含多个相关的任务。例如,在多星仿真中,你可以为每颗卫星创建一个[Process],以便将相关任务和嵌入式模块有序地组织起来。下图展示了一个示例布局,其中bskSat卫星的动力学被添加到与飞行软件(FSW)算法分开的进程中,这些算法在该卫星上执行。在每个进程中,设置了若干任务,这些任务以指定的频率进行评估。 阅读详情

转载自[https://blog.youkuaiyun.com/slvher/article/details/8977338]
如何在shell中终止一个后台进程?
一个后台服务进程如何实现优雅退出?

kill与signals

我们这里所说的kill是指作为shell command的那个kill(相对的,Linux系统中还有个叫做kill的system call,man 2 kill可查看其功能及用法),shell终端中输入man kill可以看到,kill的作用是向某个指定的进程或进程组发送指定信号,从而结束该进程/进程组。-s选项可以指定要发送的具体信号,如果没有指定,则默认发送SIGTERM信号至指定进程/进程组,若进程没有捕获该信号的逻辑,则SIGTERM的作用是终止进程。

kill支持发送的信号列表可以通过kill -l查看,而这些信号的具体含义可以通过man 7 signal查看。在我的机器上,man 7 signal输出的POSIX标准如下(kill支持的信号还有POSIX没有定义的非标准语言,这里没有摘出,感兴趣的同学可以man查看)。
在这里插入图片描述
上面的输出结果中:
第一列为信号名;
第二列为对应的信号值,需要注意的是,有些信号名对应着3个信号值,这是因为这些信号值与平台相关,将man手册对3个信号值的说明摘出如下,the first one is usually vaild for alpha and sparc,the middle one for i386,ppc and sh,and the last one for mips;
第三列为操作系统收到信号后的动作,Term表明默认动作为终止进程,lgn表明默认动作为忽略该信号,Core表明默认动作进程同时输出core dump,Stop表明默认动作为停止进程
第四列为对信号作用的注释性说明,浅显易懂,这里不再描述
需要特别说明的是,SIGKILL SIGSTOP这两个信号既不能被应用程序捕获,也不能被操作系统阻塞或忽略

kill pid和kill -9 pid的区别

kill pid的作用是向进程号为pid的进程发送SIGTERM(这是kill默认发送的信号),该信号是一个结束进程的信号且可以被应用程序捕获。若应用程序没有捕获并响应该信号的逻辑代码,则该信号的默认动作是kill掉进程,这是终止指定进程的推荐做法
kill -9 pid则是向进程号为pid的进程发送SIGKILL(该信号的编号为9),从文本上面的说明可知,SIGKILL既不能被应用程序捕获,也不能被阻塞或忽略,其动作是立即结束指定进程,通俗的说,应用程序捕获,也不能被阻塞或忽略,其动作是立即结束指定进程。通俗的说,应用层序根本无法“感知”SIGKILL信号,它在完全无准备的情况下,就被收到SIGKILL信号的操作系统给干掉了,显然,在这种“暴力”情况下,应用程序完全没有释放当前占用资源的机会。事实上,SIGKILL信号是直接发给init进程的,它收到该信号后,负责终止pid指定的进程。关于Linux init进程的说明,可以参考这里。在某些情况下(如进程已经hang死,无法响应正常信号),就可以使用kill -9来结束进程
若通过kill结束的进程是一个创建过子进程的父进程,则其子进程就会成为孤儿进程,这种情况下,子进程的退出系统就不能再被应用程序捕获(因为作为父进程的应用程序已经不存在了),不过应该不会对整个Linux系统产生什么不利影响

应用程序如何优雅退出

Linux Server端的应用程序经常会长时间运行,在运行过程中,可以申请了很多系统资源,也可能保存了很多状态,在这些场景下,我们希望进程在退出前,可以释放资源或将当前状态dump到磁盘上或打印一些重要的日志,也就是希望进程优雅退出(exit gracefully)
从这上面介绍不难看出,优雅退出可以通过捕获SIGTERM来实现,具体来讲,通常只需要两步动作
1.注册SIGTERM信号的处理函数并在处理函数中做一些进程退出的准备。信号处理函数的注册可以通过signal()或sigaction()来实现,其中,推荐使用后者来实现信号响应函数的设置。信号处理函数的逻辑越简单越好,通常的做法是在该函数中设置一个bool型的flag变量以表明进程收到了SIGTERM信号,准备退出
2.在主进程的main()中,通过类似于while(!bQuit)的逻辑来检测哪个flag变量,一旦bQuit在signal handler function中被置为true,则主进程退出while()循环,接下去就是一些释放资源或dump进程当前状态或记录日志的动作,完成这些后,主进程退出
【参考资料】
1.SIGTERM vs. SIGKILL
2. Signal handling in Linux

大模型训练和推理 大模型训练moe是指混合专家(Mixture-of-experts,简称MoE)的,这是一种用于提高大型神经网络性能的技术,它可以将模型的一部分替换为多个专家,每个专家只负责处理一部分输入数据,从而增加模型的参数量和表达能力,同时减少计算量和训练时间。指令可以作为模型的输入的一部分,也可以作为模型的输出的一部分,具体取决于任务的类型。上下文扩展技术的,这是一种用于提高大型语言模型(LLM)对长文本的处理能力的技术,它可以让模型在不增加参数量的情况下,扩展其注意力范围,从而提高模型的语言理解和生成能力。 阅读详情

相关推荐

银河麒麟V10系统下,手把手解决Ollama安装报错‘GLIBCXX_3.4.25 not found’

本文详细介绍了在银河麒麟V10系统下解决Ollama安装报错‘GLIBCXX_3.4.25 not found’的实战指南。通过隔离编译新版libstdc++、环境变量引导和服务化封装等安全方案,确保在不破坏系统稳定性的前提下顺利运行Ollama,适用于国产操作系统与AI工具的兼容性需求。

weixin_42556197的博客 484

linux 定时执行shell脚本,kill -9 CPU过高进程,java语言实现

公司测试服务器被人抓去挖矿了,CPU直接飙升到600%,700%。这个挖矿病毒特别难搞,找了公司的linux大神来处理,他说要重装系统。但是测试服务器上禅道,jenkins,jdk,mysql,maven,git。。。一大堆乱七八糟的东西,实在不想重装。就想着先简单处理一下,写个shell脚本,每过20分钟(通过观察,kill -9病毒进程之后 20分钟后它又出现了) kill -9cpu超过...

your_Heart_Private的博客 1630

Versal - 从零构建Petalinux 2024.2 AI边缘计算平台(VD100+SDT+JupyterLab实战)

本文详细介绍了如何从零开始,基于AMD Versal VD100开发板和Petalinux 2024.2构建AI边缘计算平台。内容涵盖开发环境搭建、Petalinux工程创建与配置、SDT新流程实战、启动SD卡制作,并最终集成JupyterLab与Conda,打造出开箱即用的交互式AI开发环境,帮助开发者快速进行算法验证与部署。

5f4d3s2a1q的博客 489

kill -9 的shell脚本

之前项目上的脚本,放到这里记录一下 echo "Input name of the project" read NAME PID=$(ps -ef |grep $NAME | grep -v grep | awk '{print $2}'|awk -F '/' '{print $1}') if [ -n "$PID" ]; then kill -9 $PID ...

sinat_29840673的博客 2074

从“能跑”到“好用”:一名 Python 开发者的工程化进阶之路【Python心得篇】

Python 早已不只是写脚本、跑数据的工具。后端服务AI Agent 编排层自动化平台核心语言数据与业务之间的“中枢层”区别只在于:你是用脚本方式,还是工程方式在写。如果你已经能写“能跑的 Python”,下一步,就是让它长期可跑、稳定可演进。Python 的真正价值不在于“写得快”,而在于能否支撑持续演进的工程实践。当代码从一次性脚本走向长期运行的系统,开发者必须从结构设计、职责拆分、性能意识和类型约束等方面进行系统性思考。

博客 1546

倍福--手动加入第三方伺服的配置

客户在没有硬件情况下,希望手动配置硬件,添加第三方驱动器,本文介绍其操作流程 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 操作步骤 3 2.1. 添加电机XML文件 3 2.2. 创建EtherCAT 3 2.3. 添加新建项 3 2.4. 选择型号 4 2.5. 关联NC轴 5 软硬件版本 1.1. 倍福Beckhoff 1.1.1. 控制器硬件 TwinCAT控制制器,PC或者EPC,包括: 嵌入式控制器:CX5020-

weixin_41883890的博客 5326

kill及kill -9的用法及如何实现进程的优雅退出

1. kill与signals         我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的system call, man 2 kill可查看其功能及用法),shell终端中输入man kill可以看到,kill的作用是向某个指定的进程或进程组发送指定信号,从而结束该进程/进程组。-s选项可以指定要发送的具体信号,如果

关于代码的那些事 1万+

【100%通过率】华为OD机试真题 Java&Go 实现【查找单入口空闲区域】【2022.11 Q4 新题】

给定一个 m xn 的矩阵,由若干字符 和0构成,X表示该处已被占据,0"表示该处空闲,请找到最大的单入口空闲区域.解释:空闲区域是由连通的O组成的区域,位于边界的0可以构成入口,单入口空闲区域即有目只有一个位于边界的0作为入口的由连通的'O"组成的区域。 如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。

MISAYAONE的博客 2万+

(shell 脚本)通过 kill -9 进程名 的方式停止某一个进程 (使用grep awk过滤并获取)

通过awk过滤线程名,然后进行后续操作需求 需求

zlmldylinke的博客 1797

【离线OCR】微信离线实现图片OCR文本和表格识别

基于微信本地OCR引擎(由最新版微信自动安装)。通过Python对其官方调用逻辑进行完整翻译和封装,使开发者可以用简单的API调用其强大的OCR功能。

专注于医院数据分析技术与系统开发的创作与分享。 2625

5.2.4_标志位的生成

计算机组成原理之标志位的生成

人生得意须尽欢 7596

kill -9命令的理解

kill -9是杀死进程的终极武器。一般情况下慎用,以防产生什么系统故障或者影响软件的再运行环境。下面命令是通过应用名调用kill -9杀死应用的shell: ps -ef |grep <你的应用名字> |grep -v grep|awk '{print $2}'|xargs kill -9 其实上面命令和killall是一个效果 killall <你的应用名字> 但是...

True Truth 1万+

Altera FPGA与高速ADS4249和DAC3482的LVDS接口设计

引言:本文以TI的ADS4249(ADC)和DAC3482(DAC)之间的接口为例,介绍Altera FPGA与ADC/DAC之间的DDR LVDS接口设计以及时序约束详细设计。本文介绍的实例可方便扩展到具有类似接口格式的其他高速数据转换器设计。

FPGA_Designer 1902

【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出

本篇笔记主要说明两个问题:1)如何在shell中终止一个后台进程;2)一个后台服务进程如何实现优雅退出 1. kill与signals         我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的system call, man 2 kill可查看其功能及用法),shell终端中输入man kill可以看到,kill的作用

slvher的专栏 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

kill -9 linux 用法,【Linux學習筆記】kill及kill -9的用法及如何實現進程的優雅退出...

本篇筆記主要說明兩個問題:1)如何在shell中終止一個后台進程;2)一個后台服務進程如何實現優雅退出1. kill與signals我們這里所說的kill是指作為shell command的那個kill(相對地,linux系統中還有個叫做kill的system call, man 2 kill可查看其功能及用法),shell終端中輸入man kill可以看到,kill的作用是向某個指定的進程或進程...

weixin_39762075的博客 290

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

信号退出【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出

在写这篇文章之前,xxx已经写过了几篇关于改信号退出主题的文章,想要了解的朋友可以去翻一下之前的文章         本篇笔记主要说明两个问题:1)如何在shell中终止一个后台进程;2)一个后台服务进程如何实现优雅退出 1. kill与signals         我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的system...

weixin_34025151的博客 264

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

kill 进程_kill及kill-9的用法及如何实现进程的优雅退出

1. kill与signals 我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的system call, man 2 kill可查看其功能及用法),shell终端中输入man kill可以看到,kill的作用是向某个指定的进程或进程组发送指定信号,从而结束该进程/进程组。-s选项可以指定要发送的具体信号,如果没有指定,则默认发送S...

weixin_39962356的博客 1959

java kill 进程 时间_kill及kill-9的用法及如何实现进程的优雅退出

JAVA架构师Ya七月 2019-08-191. kill与signals我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的system call, man 2 kill可查看其功能及用法),shell终端中输入man kill可以看到,kill的作用是向某个指定的进程或进程组发送指定信号,从而结束该进程/进程组。-s选项可以指定要...

weixin_31235909的博客 1472

进程未响应超时退出_kill及kill-9的用法及如何实现进程的优雅退出

1. kill与signals 我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的system call, man 2 kill可查看其功能及用法),shell终端中输入man kill可以看到,kill的作用是向某个指定的进程或进程组发送指定信号,从而结束该进程/进程组。-s选项可以指定要发送的具体信号,如果没有指定,则默认发送S...

weixin_35862131的博客 563

++实现 kill_kill及kill-9的用法及如何实现进程的优雅退出

JAVA架构师Ya七月 2019-08-19 1. kill与signals我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的system call, man 2 kill可查看其功能及用法),shell终端中输入man kill可以看到,kill的作用是向某个指定的进程或进程组发送指定信号,从而结束该进程/进程组。-s选项可以指定...

weixin_39918961的博客 211

Linux关闭进程命令:kill -2、kill -15和kill -9的区别

一个很好的类比是关闭电脑kill -15就像在图形界面点击“关机”按钮。操作系统会通知所有运行中的程序保存数据并关闭,然后才切断电源。这是安全且推荐的方式。kill -9就像直接拔掉电源线。电脑瞬间断电,所有程序都被强行终止。这可能导致文件损坏、系统错误,是万不得已时才使用的方法。第1步:尝试kill -2或kill -15对于前台进程,首选在它的终端里按Ctrl + C(也就是发送SIGINT对于后台进程,首先使用kill <PID>或。这两者在大多数程序上效果等同。

学亮编程手记 1644

Linux Kill 命令详解(Kill -9与Kill -15)

Linux进程管理:Kill命令信号机制详解 本文全面解析Linux kill命令的信号机制,重点对比kill -9(SIGKILL)和kill -15(SIGTERM)的核心区别。SIGTERM(15)是优雅终止信号,允许进程执行清理操作;而SIGKILL(9)是强制终止信号,立即杀死进程但可能导致资源泄漏。文章提供了渐进式终止流程建议:先尝试SIGTERM,必要时逐步升级到SIGINT(2)、SIGHUP(1),最后才使用SIGKILL(9)。同时介绍了获取进程PID的多种方法、常见信号类型及适用场景,

永不止息 2359
上一篇: C++---智能指针
下一篇: Linux---进程间关系和守护进程
phonycat
博客等级 码龄9年 16粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值