让Linux发送信号终止进程的文明方式

日期: 2014-03-09 作者:Sander van Vugt翻译:唐琼瑶 来源:TechTarget中国 英文

如果你负责运行Linux系统,有时候可能需要管理Linux服务。那样的话你就必须得知道如何采用服务命令开启与暂停服务,以及如何关闭服务或进程。 你可能发现Linux服务或进程变得毫无反应——在运行但不正常工作,通过常用方式还不能退出。可能需要发送一个信号终止进程。

有几种不同Linux信号让管理员通过终止命令发送给进程。Linux内核定义至少不少于32个信号,最常见的是SIGTERM、SIGHUP与SIGKILL。 终止进程不意味着真正KO它。那么在发送这些信号时真的会出现什么呢? 基本上,Linux管理员有两种方式发送命令给进程:从相关的程序本身以及从内核空间。

从相关程序出发比较好。这与微软……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

如果你负责运行Linux系统,有时候可能需要管理Linux服务。那样的话你就必须得知道如何采用服务命令开启与暂停服务,以及如何关闭服务或进程。

你可能发现Linux服务或进程变得毫无反应——在运行但不正常工作,通过常用方式还不能退出。可能需要发送一个信号终止进程。

有几种不同Linux信号让管理员通过终止命令发送给进程。Linux内核定义至少不少于32个信号,最常见的是SIGTERM、SIGHUP与SIGKILL。

终止进程不意味着真正KO它。那么在发送这些信号时真的会出现什么呢?

基本上,Linux管理员有两种方式发送命令给进程:从相关的程序本身以及从内核空间。从相关程序出发比较好。这与微软Windows类似。在启动Task Manager强制退出程序之前,先尝试通过使用File > Quit菜单选项退出。如果这样做失败了的话再强制退出。

下手别太重

使用终止命令发送SIGTERM信号给进程基本是在问“亲爱的进程,请停止活动。”如果该询问来自内核,进程就没有忽视的选择。所有情况下,都将开始停止其活动。

某些时候,停止活动需要一段时间。比如让正在处理几十个活动链接的繁忙邮件服务器停下来得需要时间。在邮箱服务停止之前需要几分钟,因为想让其优雅地断开所有活动链接。

通常,管理员认为在发送终止命令后,相关的服务将在几秒钟内关闭。如果没有,他们就使用-9命令强行关闭,这将发送SIGKILL信号给进程。

SIGKILL:寻找与破坏

发送SIGKILL信号可不是礼貌询问进程停止活动——这就像一枪爆头,当场歇菜。该进程正在使用的文件无一幸免,全都强制关闭。一旦采用SIGKILL,你就会冒着破坏目前进程所使用文件的巨大风险。

所以只有在别无选择的情况下使用SIGKILL。事实上,别那么轻松发送SIGKILL命令给进程。某些情况下,就等个15分钟结束进程就好了。贸然采用SIGKILL将损害进程打开的文件。

如果可以,重启整个系统。通过关闭系统,所有进程将接收到SIGTERM信号,然后优雅停止进程,优雅关掉文件。使用重启可能真的能修复问题,并优雅关闭进程。结果就是这种附属性关掉后,拒绝进程也就关掉了,几分钟服务器就又再次运转,也不用损伤文件。不到万不得已就不要使用-9。

相关推荐