SIGKILL信号linux下kill进程 -9

Introduction

Linux下结束进程的方式有很多。最常用的方式是使用kill命令。
Linux完美使用deepin QQ一文中,补充了在qq关闭不彻底的时候,使用的kill命令,但是后来发现使用的是-9信号。这里顺便说明下kill支持的信号列表。

       Signal     Value     Action   Comment
       --------------------------------------------------
       SIGHUP        1       Term    Hangup detected on controlling terminal
                                     or death of controlling process
       SIGINT        2       Term    Interrupt from keyboard
       SIGQUIT       3       Core    Quit from keyboard
       SIGILL        4       Core    Illegal Instruction
       SIGABRT       6       Core    Abort signal from abort(3)
       SIGFPE        8       Core    Floating point exception
       SIGKILL       9       Term    Kill signal
       SIGSEGV      11       Core    Invalid memory reference
       SIGPIPE      13       Term    Broken pipe: write to pipe with no readers
       SIGALRM      14       Term    Timer signal from alarm(2)
       SIGTERM      15       Term    Termination signal
       SIGUSR1   30,10,16    Term    User-defined signal 1
       SIGUSR2   31,12,17    Term    User-defined signal 2
       SIGCHLD   20,17,18    Ign     Child stopped or terminated
       SIGCONT   19,18,25            Continue if stopped
       SIGSTOP   17,19,23    Stop    Stop process
       SIGTSTP   18,20,24    Stop    Stop typed at tty
       SIGTTIN   21,21,26    Stop    tty input for background process
       SIGTTOU   22,22,27    Stop    tty output for background process

kill默认发送的是SIGTERM信号,

为什么不应该用kill -9信号

整理翻译自Why should I not use ‘kill -9’ / SIGKILL
Q:为什么说kill -9 或者kill -SIGKILL是kill进程不好的方式?
A:SIGKILL信号可以立即结束进程,对于一些小程序来说是无所谓的,但实际上,很少有这样的小进程。即使是看起来很普通的程序,通常也做了各种事务性工作,而这些都需要在进程结束前进行清理(想想平时写代码时,捕捉异常时的finally语句块),比如关闭资源句柄,删除临时文件,将数据从内存写到硬盘上。
如果比较幸运,那么使用SIGKILL信号不会有任何问题,但是不可能永远幸运,等真的出现错误时,再去补救就太晚了。
你应该尽量绝不使用SIGKILL信号,除非你实在无路可走。大多数情况下,重启比手动发送SIGKILL信号更安全。
你应该使用CTRL+C(给前台进程发送了一个SIGINT信号)或者发送SIGTERM信号去通知一个进程结束自己。
SIGKILL既不能被应用程序捕获,也不能被阻塞或忽略,其动作是立即结束指定进程。通俗地说,应用程序根本无法“感知”SIGKILL信号,它在完全无准备的情况下,就被收到SIGKILL信号的操作系统给干掉了,显然,在这种“暴力”情况下,应用程序完全没有释放当前占用资源的机会。事实上,SIGKILL信号是直接发给init进程的,它收到该信号后,负责终止pid指定的进程。

wine qq的退出

所以对于wine qq的退出,应该使用如下的链接的内容
kill wineqq

Reference

Why should I not use ‘kill -9’ / SIGKILL
【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出
kill 命令 – IBM

文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://www.findhao.net/easycoding/1770

你可能喜欢:(相似内容推荐和广告都使用了谷歌的推荐系统,需要对本站取消广告屏蔽才能显示。感谢点击↓广告支持博主~)

Find

新浪微博(FindSpace博客)QQ群:不安分的Coder(375670127) 不安分的Coder

发表评论

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

*