• Linux中用Kill-2和Kill-9都能够结束进程,他们之间的区别为: Kill-2:功能类似于Ctrl+C是程序在结束之前,能够保存相关数据,然后再退出。 Kill-9:直接强制结束程序。 在用nohup挂起程序时,当想要结束这个程序,最好用...

    在Linux中用Kill-2和Kill-9都能够结束进程,他们之间的区别为:

    Kill-2:功能类似于Ctrl+C是程序在结束之前,能够保存相关数据,然后再退出。
    Kill-9:直接强制结束程序。

    在用nohup挂起程序时,当想要结束这个程序,最好用kill-2。能够模拟在控制台结束程序的功能。

    展开全文
  • kill -3 pid 和kill -9 pid

    2018-07-12 16:57:51
    做系统稳定性问题分析,当遇到系统卡死时,我们经常要使用“kill -3 pid”来打印System_Server进程各个线程的Java调用栈,根据线程状态及调用栈来更进一步定位问题点,当然某个应该界面卡顿时间长时也可以通过这个...

     做系统稳定性问题分析,当遇到系统卡死时,我们经常要使用“kill -3 pid”来打印System_Server进程各个线程的Java调用栈,根据线程状态及调用栈来更进一步定位问题点,当然某个应该界面卡顿时间长时也可以通过这个命令来抓取Java调用栈进行分析。注意native进程是不能用kill -3来打trace的,而是使用debuggerd.

    kill -3 pid 后文件的保存路径为:/proc/${pid}/cwd

     文件名为:antBuilderOutput.log 


     kill -9 pid则是向进程号为pid的进程发送SIGKILL(该信号的编号为9),从本文上面的说明可知,SIGKILL既不能被应用程序捕获,也不能被阻塞或忽略,其动作是立即结束指定进程。通俗地说,应用程序根本无法“感知”SIGKILL信号,它在完全无准备的情况下,就被收到SIGKILL信号的操作系统给干掉了,显然,在这种“暴力”情况下,应用程序完全没有释放当前占用资源的机会。事实上,SIGKILL信号是直接发给init进程的,它收到该信号后,负责终止pid指定的进程。在某些情况下(如进程已经hang死,无法响应正常信号),就可以使用kill -9来结束进程。

    展开全文
  • linux kill -3

    2013-06-26 10:13:59
    linuxkill -3指令可以帮我们输出当前进程所有线程的状态,如哪些线程在运行,哪些在等待,因为什么等待,代码哪一行等待。 kill -3 会将信息输出至控制台,所以使用时,被kill -3的进程最好是nohup启动的。 ...

    linux的kill -3指令可以帮我们输出当前进程中所有线程的状态,如哪些线程在运行,哪些在等待,因为什么等待,代码哪一行等待。

    kill -3 会将信息输出至控制台,所以使用时,被kill -3的进程最好是nohup启动的。


    kill -3并不会影响程序运行,不用担心他把程序杀死了。

    展开全文
  • 大家对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

    展开全文
  •  kill号令用于终止指定的过程(terminate a process),是Unix/Linux下过程经管的常用号令。凡是,我们在须要终止某个或某些过程时,先应用ps/pidof/pstree/top等对象获取过程PID,然后应用kill号令来杀掉该过程。...
    
     kill号令用于终止指定的过程(terminate a process),是Unix/Linux下过程经管的常用号令。凡是,我们在须要终止某个或某些过程时,先应用ps/pidof/pstree/top等对象获取过程PID,然后应用kill号令来杀掉该过程。kill号令的别的一个用处就是向指定的过程或过程组发送旌旗灯号(The  command kill sends the specified signal to the specified process or process group),或者断定过程号为PID的过程是否还在。比如,有很多法度都把SIGHUP旌旗灯号作为从头读取设备文件的触发前提。

    一 常用参数

    格式:kill <pid>

    格式:kill -TERM <pid>

    发送SIGTERM旌旗灯号到指定过程,若是过程没有捕获该旌旗灯号,则过程终止(If no signal is specified, the TERM signal is sent.  The TERM signal will kill processes which do not catch this signal.)

    格式:kill -l

    列出所有旌旗灯号名称(Print a list of signal names.  These are found in /usr/include/linux/signal.h)。只有第9种旌旗灯号(SIGKILL)才可以无前提终止过程,其他旌旗灯号过程都有权力忽视。下面是常用的旌旗灯号:

    HUP     1    终端断线

    INT     2    中断(同 Ctrl + C)

    QUIT    3    退出(同 Ctrl + )

    TERM    15    终止

    KILL    9    强迫终止

    CONT    18    持续(与STOP相反, fg/bg号令)

    STOP    19    暂停(同 Ctrl + Z)

    格式:kill -l <signame>

    显示指定旌旗灯号的数值。

    格式:kill -9 <pid>

    格式:kill -KILL <pid>

    强迫杀掉指定过程,无前提终止指定过程。

    格式:kill %<jobid>

    格式:kill -9 %<jobid>

    杀掉指定的任务(应用jobs号令可以列出)

    格式:kill -QUIT <pid>

    格式:kill -3 <pid>

    使得法度正常的退出。

    killall号令

    killall号令杀死同一过程组内的所有过程。其容许指定要终止的过程的名称,而非PID。

    # killall httpd  

    二、示例

    1)先用ps查找过程,然后用kill杀掉。

    [root@new55 ~]# ps -ef|grep vim

    root      3368  2884  0 16:21 pts/1    00:00:00 vim install.log

    root      3370  2822  0 16:21 pts/0    00:00:00 grep vim

    [root@new55 ~]# kill 3368

    [root@new55 ~]# kill 3368

    -bash: kill: (3368) - 没有那个过程

    三、kill signal

    01 $ kill -l
    02  1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL
    03  5) SIGTRAP  6) SIGABRT  7) SIGBUS   8) SIGFPE
    04  9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
    05 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
    06 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
    07 21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU
    08 25) SIGXFSZ 26) SIGVTALRM   27) SIGPROF 28) SIGWINCH
    09 29) SIGIO   30) SIGPWR  31) SIGSYS  34) SIGRTMIN
    10 35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
    11 39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
    12 43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
    13 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
    14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
    15 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
    16 59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
    17 63) SIGRTMAX-1  64) SIGRTMAX

    列表中,编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ~ 63的信号是后来扩充的,称做可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。

    下面我们对编号小于SIGRTMIN的信号进行讨论。

    1) SIGHUP

    本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联。

    登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台进程组和后台进程组,一般都属于这个 Session。当用户退出Linux登录时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进 程组和后台有终端输出的进程就会中止。不过可以捕获这个信号,比如wget能捕获SIGHUP信号,并忽略它,这样就算退出了Linux登录,wget也 能继续下载。

    此外,对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。

    2) SIGINT

    程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。

    3) SIGQUIT

    和SIGINT类似, 但由QUIT字符(通常是Ctrl-)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。

    4) SIGILL

    执行了非法指令. 通常是因为可执行文件本身出现错误, 或者试图执行数据段. 堆栈溢出时也有可能产生这个信号。

    5) SIGTRAP

    由断点指令或其它trap指令产生. 由debugger使用。

    6) SIGABRT

    调用abort函数生成的信号。

    7) SIGBUS

    非法地址, 包括内存地址对齐(alignment)出错。比如访问一个四个字长的整数, 但其地址不是4的倍数。它与SIGSEGV的区别在于后者是由于对合法存储地址的非法访问触发的(如访问不属于自己存储空间或只读存储空间)。

    8) SIGFPE

    在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误。

    9) SIGKILL

    用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。如果管理员发现某个进程终止不了,可尝试发送这个信号。

    10) SIGUSR1

    留给用户使用

    11) SIGSEGV

    试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据.

    12) SIGUSR2

    留给用户使用

    13) SIGPIPE

    管道破裂。这个信号通常在进程间通信产生,比如采用FIFO(管道)通信的两个进程,读管道没打开或者意外终止就往管道写,写进程会收到SIGPIPE信号。此外用Socket通信的两个进程,写进程在写Socket的时候,读进程已经终止。

    14) SIGALRM

    时钟定时信号, 计算的是实际的时间或时钟时间. alarm函数使用该信号.

    15) SIGTERM

    程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。

    17) SIGCHLD

    子进程结束时, 父进程会收到这个信号。

    如果父进程没有处理这个信号,也没有等待(wait)子进程,子进程虽然终止,但是还会在内核进程表中占有表项,这时的子进程称为僵尸进程。这种情 况我们应该避免(父进程或者忽略SIGCHILD信号,或者捕捉它,或者wait它派生的子进程,或者父进程先终止,这时子进程的终止自动由init进程来接管)。

    18) SIGCONT

    让一个停止(stopped)的进程继续执行. 本信号不能被阻塞. 可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的工作. 例如, 重新显示提示符...

    19) SIGSTOP

    停止(stopped)进程的执行. 注意它和terminate以及interrupt的区别:该进程还未结束, 只是暂停执行. 本信号不能被阻塞, 处理或忽略.

    20) SIGTSTP

    停止进程的运行, 但该信号可以被处理和忽略. 用户键入SUSP字符时(通常是Ctrl-Z)发出这个信号

    21) SIGTTIN

    当后台作业要从用户终端读数据时, 该作业中的所有进程会收到SIGTTIN信号. 缺省时这些进程会停止执行.

    22) SIGTTOU

    类似于SIGTTIN, 但在写终端(或修改终端模式)时收到.

    23) SIGURG

    有"紧急"数据或out-of-band数据到达socket时产生.

    24) SIGXCPU

    超过CPU时间资源限制. 这个限制可以由getrlimit/setrlimit来读取/改变。

    25) SIGXFSZ

    当进程企图扩大文件以至于超过文件大小资源限制。

    26) SIGVTALRM

    虚拟时钟信号. 类似于SIGALRM, 但是计算的是该进程占用的CPU时间.

    27) SIGPROF

    类似于SIGALRM/SIGVTALRM, 但包括该进程用的CPU时间以及系统调用的时间.

    28) SIGWINCH

    窗口大小改变时发出.

    29) SIGIO

    文件描述符准备就绪, 可以开始进行输入/输出操作.

    30) SIGPWR

    Power failure

    31) SIGSYS

    非法的系统调用。

    在以上列出的信号中,程序不可捕获、阻塞或忽略的信号有:SIGKILL,SIGSTOP

    不能恢复至默认动作的信号有:SIGILL,SIGTRAP

    默认会导致进程流产的信号有:SIGABRT,SIGBUS,SIGFPE,SIGILL,SIGIOT,SIGQUIT,SIGSEGV,SIGTRAP,SIGXCPU,SIGXFSZ

    默认会导致进程退出的信号有:SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE,SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1,SIGUSR2,SIGVTALRM

    默认会导致进程停止的信号有:SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU

    默认进程忽略的信号有:SIGCHLD,SIGPWR,SIGURG,SIGWINCH

    此外,SIGIO在SVR4是退出,在4.3BSD中是忽略;SIGCONT在进程挂起时是继续,否则是忽略,不能被阻塞。


    一般来说,在linux shell中

    ctrl-c 是发送 SIGINT 信号, 

    ctrl-z 是发送 SIGSTOP信号 
    ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF 

    具体的可以通过stty -a来查看系统配置,如
    # stty -a
    speed 38400 baud; rows 35; columns 166; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
    lnext = ^V; flush = ^O; min = 1; time = 0;
    -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
    opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

    常见的几个:
    kill -SIGSTOP $pid  # 相当于 ctrl-z
    kill -SIGCONT $pid  # 相当于 fg
    kill -SIGINT $pid   # 相当于 ctrl-c

    在脚本实现可以用
    echo -e '\00X'   或    echo $'\00X'    #x表示十进制数
    如:
    Ctrl-A 用 \001
    Ctrl-B 用 \002
    Ctrl-C 用 \003
    Ctrl-D 用 \004
    ... ...
    Ctrl-Z 用 \032

    如,要表示Ctrl-D,可以用
    echo -e '\004'

    应该是如何利用shell在终端下输了ctrl+z,ctrl+c,ctrl+d等等

    我试了几种分法都不行,以ctrl-z为例
    echo ^z
    echo -e "\0xx"  #不知道ctrl-z代表0几几
    echo -e "Alt+\0xx"
    system ( echo -e \"\\"0xx"\" )

    通常来说:
    ctrl-c 是发送 SIGINT 信号,
    ctrl-z 是发送 SIGSTOP信号
    ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF

    具体你可以 stty -a 查看系统设置

    你如果想在脚本中实现,举个例子:

    sleep 100 &
    pid=$!
    kill -SIGSTOP $pid  # 相当于 ctrl-z
    kill -SIGCONT $pid  # 相当于 fg
    kill -SIGINT $pid   # 相当于 ctrl-c
    展开全文
  • 查看用法,使用kill 利用命令kill -l查看信号变量 kill 对应的是kill -15 ,kill 程序时有以下特点 系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该signal后,将会发生以下的事情 程序立刻停止 当程序...
  • 转载自https://www.cnblogs.com/liuhouhou/p/5400540.html大家对kill -9 肯定非常熟悉,在工作也经常用到。特别是你去重启tomcat时。可是多半看来,我们对-9的理解只是表面而已。...1)kill从help可以清晰的看...
  • killkill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序如果用错了,可能会造成莫名其妙的现象。 kill -15 pid(默认) 执行完该指令后,操作系统会发送一个 SIGTERM 信号...
  • 今天学习到关于进程的一些东西,然后百度了下kill。以前我们在测试时也会用到kill的命令去杀进程,有的时候会用kill -9,但从没想过这两者的区别。今天算是明白了一点吧,以后如果有什么领悟,会再做补充。 1)kill ...
  • Linux kill和kill-9区别

    2018-07-16 15:29:31
    进程状态转换图killkill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序如果用错了,可能会造成莫名其妙的现象。执行kill命令,系统会发送一个SIGTERM信号给对应的程序。当...
  • Linux kill killall kill -9

    2019-02-18 15:03:34
    Linux kill killall kill -9
  • 今天学习在linux中查看进程状态的方法,在一本书上面看到可以使用kill -3 查看进程状态,我非常激动的想看一下效果,就自己写了一个小Demo。可是当我使用时,这个命令死活没有反应,下面贴运行图。 可以看到run...
  • LinuxKill -9命令

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

    2016-11-30 15:04:20
    1.作用  kill命令用来中止一个进程。  2.格式  kill [ -s signal | -p ] [ -a ] pid ...  kill -l [ signal ]  3.参数  -s:指定发送的信号。  -p:模拟发送信号。...进程是Linux系统
  • 版权声明:本文为博主原创文章,未经博主允许不得转载!! ... 交流QQ: 824203453 进程综述: ...1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生...
  • linux kill -9 及 kill -15

    2017-05-05 16:17:35
    kill -9 不管什么情况,都干掉 kill -15 先干掉相关命令,然后在关闭主程序
  • Linux的系统kill是我们最常见的命令之一。 kill,英语中为杀死的意思,顾名思义,就是用来杀死一些东西的命令,常用来杀死系统的进程。就像是Windows系统的关闭软件的按钮,不过kill最直接,从后台直接...
  • Linux基础】kill详解

    2020-05-28 17:01:35
    查看的一些资料,这里了kill命令的一些用法
  • 如何在shell终止一个后台进程? 一个后台服务进程如何实现优雅退出...我们这里所说的kill是指作为shell command的那个kill(相对的,Linux系统还有个叫做kill的system call,man 2 kill可查看其功能及用法),s...
1 2 3 4 5 ... 20
收藏数 186,868
精华内容 74,747
热门标签