• killkill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。 kill -15 pid(默认) 执行完该指令后,操作系统会发送一个 SIGTERM 信号...

    kill和kill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。

    kill -15 pid(默认)
    执行完该指令后,操作系统会发送一个 SIGTERM 信号给对应的程序。当程序接收到该信号后,可能会发生以下几种情况的一种:
    当前程序立刻停止;
    程序释放相应资源,然后再停止;
    程序可能仍然继续运行。
    大部分程序会先释放自己的资源,然后再停止。但是也有程序可以在接受到信号量后,继续做其他一些事情,并且这些事情是可以配置的。如果程序正在等待IO,可能就不会立马做出响应。也就是说,15) SIGTERM 是可能被阻塞、被忽略的。

    kill -9 pid
    如果 15) SIGTERM 可以不进行响应?那 9) SIGKILL就是必杀信号,多半 ROOT 会直接使用这个命令,但并不推荐这么做。
    小结:在使用 kill -9 前,应该先使用 kill -15,给目标进程一个清理善后工作的机会。如果没有,可能会留下一些不完整的文件或状态,从而影响服务的再次启动。
     

    展开全文
  • Linux的系统中,kill是我们最常见的命令之一。 kill,英语中为杀死的意思,顾名思义,就是用来杀死一些东西的命令,常用来杀死系统中的进程。就像是Windows系统中的关闭软件的按钮,不过kill最直接,从后台直接...

    前言


    在Linux的系统中,kill是我们最常见的命令之一。
    kill,英语中为杀死的意思,顾名思义,就是用来杀死一些东西的命令,用来杀死系统中的进程。就像是Windows系统中的关闭软件的按钮或任务管理器的结束任务,不过kill最直接,从后台直接停止。

    下面就介绍一下,kill是如何杀死进程的。



    kill命令的参数


    在Linux系统中命令都是有参数的,这给了我们很多的选择,但是kill的重点不在于参数而是信号,下面就是kill的一些参数(简单了解即可)

    -a 当处理当前进程时,不限制命令名和进程号的对应关系
    -Z 只杀死拥有scontext 的进程
    -e 要求匹配进程名称
    -I 忽略小写
    -g 杀死进程组(不是进程)
    -i 杀死进程前会先询问用户
    -l 列出所有的已知信号名称
    -q 禁止输出警告信息
    -s 发送指定的信号
    -v 显示报告信号是否成功发送
    -w 等待进程死亡
    -u 指定用户
    –version 显示版本显示



    kill的信号


    kill命令的实现是通过发送指定的信号到相应进程来实现的,就像是电视遥控器一样。一般先用ps 或top命令查到进程的id,再使用kill杀死。


    【1】格式: kill + 信号 + 进程号

    (kill是简洁的,一般直接加上信号和进程id,直接杀死,命令的参数反而不常用)


    【2】常用kill的信号

    kill -l 即可查出kill的所有的信号(共有64种)

    这里写图片描述

    但是常用的只有9种信号:

    <1> 1 终端断线

    <2>2 中断(等同 Ctrl + C)

    <3>3 退出(同 Ctrl + \)

    <4>15 终止(可以使得进程在退出之前清理并释放资源)

    <5> 9 强制终止

    <6>18 继续(与19相反)

    <7>19 暂停(等同 Ctrl + Z)



    kill的实际应用

    kill只可杀死单个进程;pkill和killall可杀死多个进程


    【1】彻底杀死进程

    当我们杀掉父进程时,其下的子进程也会被杀死
    kill -9 常用来杀死僵尸进程

    格式:kill -9 进程id

    <1>查出服务的进程id
    ps aux |grep httpd

    <2>杀死进程(3645为查到的进程id)
    kill -9 3645


    【2】杀死程序

    程序的运行会产生进程,所以可以通过杀死进程来关闭程序,可以使用kill来实现,但是,kill只可杀死单个进程,如果一个一个杀,有点费时间(也可 ps aux |grep httpd | awk ‘{ print $2 }’ |xargs kill -9 )。

    我们这时就可以通过pkill和killall来实现,杀死程序。

    <1>直接杀死程序(httpd为程序名)
    pkill -9 httpd

    killall -9 httpd


    【3】强制踢掉登陆用户

    有的时候,可能我们的系统中有很多用户在同时登陆这一台服务器,而我们想要踢掉某个不良用户,就可以执行如下操作。

    <1>查看用户登陆信息
    w

    这里写图片描述

    <2>查看自己的身份(避免把自己踢掉)
    who am i

    <3>踢掉用户ats

    pkill -kill -t pts/2(按终端踢,pts/2为所踢用户的终端)

    pkill -u ats(按用户名踢,ats为用户名)



    kill的注意事项

    1.如果kill时,不指定信号就会默认发送信号15,终止指定进程,使得进程在退出之前清理并释放资源。

    2.使用kill时,root用户将影响用户的进程,非root用户只能影响自己的进程。

    3.使用kill时,当kill向进程发送信号,必须是这些进程的主人。如果杀死一个没有权限杀死的进程或杀死一个不存在的进程,就会报错。如下:
    -bash: kill: (20) - No such process

    4.使用kill时,如果成功地发送了信号,shell会在屏幕上显示出进程的终止信息。(按下Enter键,就会显示出来)

    5.使用kill时,如果使用信号9,使进程强行终止,可能会使数据丢失或者终端无法恢复到正常状态。

    6.init进程,它是一个由内核启动的用户级进程,所有进程都是init进程的子孙,init不可杀。

    展开全文
  • 大家对kill -9 肯定非常熟悉,在工作中也经常用到。特别是你去重启tomcat时。可是多半看来,我们对-9的理解只是表面而已。 很少有人(包括我)认真的去了解一下 kill -n 这个n到底是什么东东。自我批评一下。 好吧...

    大家对kill -9 肯定非常熟悉,在工作中也经常用到。特别是你去重启tomcat时。可是多半看来,我们对-9的理解只是表面而已。

    很少有人(包括我)认真的去了解一下 kill -n 这个n到底是什么东东。自我批评一下。

    好吧。我们来好好的认识一下这个熟悉的陌生人。

    1)kill

    从help中可以清晰的看到 -n 指的是 信号编号,那问题来了,“信号编号”是哪位大神???

    2)kill -l(查看Linux/Unix的信号变量)

    这么多呀!! 今天就单独说一下SIGKILLSIGTERM

    3)(kill pid) 、( kill -15 pid)

    系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该signal后,将会发生以下的事情

    1. 程序立刻停止
    2. 当程序释放相应资源后再停止
    3. 程序可能仍然继续运行

          大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后在停止。但是也有程序可以在接受到信号量后,做一些其他的事情,并且这些事情是可以

          配置的。如果程序正在等待IO,可能就不会立马做出相应。

      也就是说,SIGTERM多半是会被阻塞的、忽略。

    4)kill  -9 pid

    你不是可以不响应 SIGTERM吗??那好,我给你下一道必杀令,我看你还不乖乖的。多半admin会用这个命令

    不过,也不是所有的程序都会乖乖听话,总有那些状态下的程序无法立刻相应。

     

    附录:

    linux signals

    Signal Name Number Description
    SIGHUP 1 Hangup (POSIX)
    SIGINT 2 Terminal interrupt (ANSI)
    SIGQUIT 3 Terminal quit (POSIX)
    SIGILL 4 Illegal instruction (ANSI)
    SIGTRAP 5 Trace trap (POSIX)
    SIGIOT 6 IOT Trap (4.2 BSD)
    SIGBUS 7 BUS error (4.2 BSD)
    SIGFPE 8 Floating point exception (ANSI)
    SIGKILL 9 Kill(can't be caught or ignored) (POSIX)
    SIGUSR1 10 User defined signal 1 (POSIX)
    SIGSEGV 11 Invalid memory segment access (ANSI)
    SIGUSR2 12 User defined signal 2 (POSIX)
    SIGPIPE 13 Write on a pipe with no reader, Broken pipe (POSIX)
    SIGALRM 14 Alarm clock (POSIX)
    SIGTERM 15 Termination (ANSI)
    SIGSTKFLT 16 Stack fault
    SIGCHLD 17 Child process has stopped or exited, changed (POSIX)
    SIGCONT 18 Continue executing, if stopped (POSIX)
    SIGSTOP 19 Stop executing(can't be caught or ignored) (POSIX)
    SIGTSTP 20 Terminal stop signal (POSIX)
    SIGTTIN 21 Background process trying to read, from TTY (POSIX)
    SIGTTOU 22 Background process trying to write, to TTY (POSIX)
    SIGURG 23 Urgent condition on socket (4.2 BSD)
    SIGXCPU 24 CPU limit exceeded (4.2 BSD)
    SIGXFSZ 25 File size limit exceeded (4.2 BSD)
    SIGVTALRM 26 Virtual alarm clock (4.2 BSD)
    SIGPROF 27 Profiling alarm clock (4.2 BSD)
    SIGWINCH 28 Window size change (4.3 BSD, Sun)
    SIGIO 29 I/O now possible (4.2 BSD)
    SIGPWR 30 Power failure restart (System V)

    参考文献

    https://major.io/2010/03/18/sigterm-vs-sigkill/
    http://blog.csdn.net/ashlingr/article/details/8057825
    http://www.comptechdoc.org/os/linux/programming/linux_pgsignals.html

    展开全文
  • linux中的kill详解

    2016-05-04 16:43:23
    Linux(还有Mac),你可以用一个"kill"命令强制终结它。在这个教程中,我们将展示给你多种方式使用"kill"命令终结应用。 Kill命令和信号 当你执行一个"kill"命令,你实际上发送了一个信号给系统,让它去终结...

      无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭。在Linux(还有Mac),你可以用一个"kill"命令强制终结它。在这个教程中,我们将展示给你多种方式使用"kill"命令终结应用。

    Kill命令和信号

    当你执行一个"kill"命令,你实际上发送了一个信号给系统,让它去终结不正常的应用。总共有60个你可以使用的信号,但是基本上你只需要知道SIGTERM(15)和SIGKILL(9)。

    你可以用这个命令看到所有信号的列表:

    1. kill -l 

    ·SIGTERM - 此信号请求一个进程停止运行。此信号是可以被忽略的。进程可以用一段时间来正常关闭,一个程序的正常关闭一般需要一段时间来保存进度并释放资源。换句话说,它不是强制停止。

    ·SIGKILL - 此信号强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。

    使用"kill"的语法是:

    1. kill [信号或选项] PID(s) 

    默认信号(当没有指定的时候)是SIGTERM。当它不起作用时,你可以使用下面的命令来强制kill掉一个进程:

    1. kill SIGKILL PID 

    或者

    1. kill -9 PID 

    这里"-9"代表着SIGKILL信号。

    如果你不知道应用的PID,仅需要运行这个命令:

    1. ps ux 

    它会显示所有正在运行的应用还有应用的PID。

    例如,要kill掉Chrome,我会运行命令:

    1. kill -9 3629 

    也可以在同一时间kill多个进程。

    1. kill -9 PID1 PID2 PID3 

    PKill

    "pkill"命令允许使用扩展的正则表达式和其它匹配方式。你现在可以使用应用的进程名kill掉它们,而不是使用PID。例如,要kill掉Firefox浏览器,只需要运行命令:

    1. pkill firefox 

    使用正则表达式匹配的话,你可以输入进程名的部分字符,比如:

    1. pkill fire 

    为了避免kill掉错误的进程,你应该用一下"pgrep -l [进程名]"列表来匹配进程名称。


    Killall

    killall同样使用进程名替代PID,并且它会kill掉所有的同名进程。例如,如果你正在运行多个Firefox浏览器的实例,可以用命令把它们全部kill掉:

    1. killall firefox 

    在Gnome中,你可以使用这个命令重启Nautilus:

    1. killall nautilus 

    展开全文
  • 大家对kill -9 肯定非常熟悉,在工作中也经常用到。特别是你去重启tomcat时。可是多半看来,我们对-9的理解只是表面而已。 很少有人(包括我)认真的去了解一下 kill -n 这个n...2)kill -l(查看Linux/Unix的信号...

    大家对kill -9 肯定非常熟悉,在工作中也经常用到。特别是你去重启tomcat时。可是多半看来,我们对-9的理解只是表面而已。

    很少有人(包括我)认真的去了解一下 kill -n 这个n到底是什么东东。

    好吧。我们来好好的认识一下这个熟悉的陌生人。
    1)kill
    在这里插入图片描述
    从help中可以清晰的看到 -n 指的是 信号编号,那么信号编号是什么呢?
    2)kill -l(查看Linux/Unix的信号变量)
    在这里插入图片描述
    这么多呀!! 今天就单独说一下SIGKILL和SIGTERM
    对于( kill -15 pid)系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该signal后,将会发生以下的事情

    1. 程序立刻停止
    2. 当程序释放相应资源后再停止
    3. 程序可能仍然继续运行
      大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后在停止。但是也有程序可以在接受到信号量后,做一些其他的事情,并且这些事情是可以 配置的。如果程序正在等待IO,可能就不会立马做出相应。也就是说,SIGTERM多半是会被阻塞的、忽略。
      对于kill -9 pid,你不是可以不响应 SIGTERM吗??那好,我给你下一道必杀令,我看你还不乖乖的。多半admin会用这个命令,不过,也不是所有的程序都会乖乖听话,总有那些状态下的程序无法立刻相应。
      附录:

    linux signals

    Signal Name Number Description
    SIGHUP 1 Hangup (POSIX)
    SIGINT 2 Terminal interrupt (ANSI)
    SIGQUIT 3 Terminal quit (POSIX)
    SIGILL 4 Illegal instruction (ANSI)
    SIGTRAP 5 Trace trap (POSIX)
    SIGIOT 6 IOT Trap (4.2 BSD)
    SIGBUS 7 BUS error (4.2 BSD)
    SIGFPE 8 Floating point exception (ANSI)
    SIGKILL 9 Kill(can’t be caught or ignored) (POSIX)
    SIGUSR1 10 User defined signal 1 (POSIX)
    SIGSEGV 11 Invalid memory segment access (ANSI)
    SIGUSR2 12 User defined signal 2 (POSIX)
    SIGPIPE 13 Write on a pipe with no reader, Broken pipe (POSIX)
    SIGALRM 14 Alarm clock (POSIX)
    SIGTERM 15 Termination (ANSI)
    SIGSTKFLT 16 Stack fault
    SIGCHLD 17 Child process has stopped or exited, changed (POSIX)
    SIGCONT 18 Continue executing, if stopped (POSIX)
    SIGSTOP 19 Stop executing(can’t be caught or ignored) (POSIX)
    SIGTSTP 20 Terminal stop signal (POSIX)
    SIGTTIN 21 Background process trying to read, from TTY (POSIX)
    SIGTTOU 22 Background process trying to write, to TTY (POSIX)
    SIGURG 23 Urgent condition on socket (4.2 BSD)
    SIGXCPU 24 CPU limit exceeded (4.2 BSD)
    SIGXFSZ 25 File size limit exceeded (4.2 BSD)
    SIGVTALRM 26 Virtual alarm clock (4.2 BSD)
    SIGPROF 27 Profiling alarm clock (4.2 BSD)
    SIGWINCH 28 Window size change (4.3 BSD, Sun)
    SIGIO 29 I/O now possible (4.2 BSD)
    SIGPWR 30 Power failure restart (System V)
    展开全文
  • linuxkill

    2019-08-05 09:24:17
    不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL”参数,其发送的信号为SIGKILL(9),将强制结束进程,使用ps命令或者jobs命令可以查看进程号。root用户将影响用户的进程,非root用户...
  • linux的进程管理手段丰富。想怎么杀进程都可以。废话少说,正题开始: 常规篇: 首先,用ps查看进程,方法如下: $ ps -ef 或者: $ ps -aux 此时如果我想杀了火狐的进程就在终端输入: $ kill -s 9 ...
  • kill 对应的是kill -15 ,kill 程序时有以下特点 系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该signal后,将会发生以下的事情 程序立刻停止 当程序释放相应资源后再停止 程序可能仍然继续运行 大部分...
  • linux kill -9 及 kill -15

    2017-05-05 16:17:35
    kill -9 不管什么情况,都干掉 kill -15 先干掉相关命令,然后在关闭主程序
  • Linux kill 强制关闭 进程
  • linux c++ kill进程

    2017-08-17 17:22:21
    kill(传送信号给指定的进程)表头文件 #include #include定义函数 int kill(pid_t pid,int sig);函数说明 kill()可以用来送参数 sig 指定的信号给参数 pid 指定的进程。参数 pid 有几种情况: pid>0 将信号传给...
  • Linux基础】kill详解

    2020-05-28 17:01:35
    查看的一些资料,这里了kill命令的一些用法
  • Linux批量kill进程

    2018-07-10 11:08:16
    python多进程写太多了,批量kill ps -ef | grep python | grep -v grep //列出所有名字有python的进程 ps -ef | grep python | grep -v grep | awk '{print "kill -9 "$2}' //打印kill到所有这些进程的...
  • LinuxKill进程

    2019-01-05 16:06:01
    杀死进程命令:kill -s 9 $PID $PID获取方式: 1. 用ps命令查看活动的进程,找到想要杀死的进程的PID,然后kill   2.pgrep命令,用法如下  pgrep [-flvx] [-d DELIM] [-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s...
  • Linux(还有Mac),你可以用一个”kill”命令强制终结它。本篇博文中,我们将展示给你多种方式使用”kill”命令终结应用。Kill命令和信号[xgj@entel2 ~]$ kill kill: usage: kill [-s sigspec | -n signum | -...
  • Linux kill killall kill -9

    2019-02-18 15:03:34
    Linux kill killall kill -9
  • kill命令用于删除执行中的程序或工作。 kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或...
  • Linux killkill-9区别

    2018-07-16 15:29:31
    进程状态转换图killkill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。执行kill命令,系统会发送一个SIGTERM信号给对应的程序。当...
  • 本例环境: CentOS Linux release 7.4.1708场景: 查找tomcat进程并kill进程 1.查找进程号 ps -aux | grep tomcat 2.kill进程 kill -s 9 进程号 以上,TKS
  • [Linux]linux killtask命令

    2017-07-13 10:14:42
    给定任务名称,杀死所有该任务的linux进程
1 2 3 4 5 ... 20
收藏数 187,160
精华内容 74,864
热门标签
关键字:

15 kill linux