zoukankan      html  css  js  c++  java
  • kill命令之kill命令

    很多同学在日常使用 Linux 中会经常使用 kill 命令来杀死进程,有的直接使用 kill,有的使用 kill -9,有的使用 kill -3,他们是什么意思呢,有什么区别呢,今天我们就了解一下 Kill 命令和 Linux 中的信号。Kill命令
    kill命令的格式是 kill -Signal pid,其中 pid 就是进程的编号,signal是发送给进程的信号,默认参数下,kill 发送 SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
    查看Kill命令的Signal信号列表可以使用命令:kill -l 来查看:

     Linux Signal 信号

    Linux支持POSIX标准信号和实时信号。下面给出Linux Signal的简表:

    信号 取值 默认动作 含义(发出信号的原因)
    SIGHUP 1 Term 终端的挂断或进程死亡
    SIGINT 2 Term 来自键盘的中断信号
    SIGQUIT 3 Core 来自键盘的离开信号
    SIGILL 4 Core 非法指令
    SIGABRT 6 Core 来自abort的异常信号
    SIGFPE 8 Core 浮点例外
    SIGKILL 9 Term 杀死
    SIGSEGV 11 Core 段非法错误(内存引用无效)
    SIGPIPE 13 Term 管道损坏:向一个没有读进程的管道写数据
    SIGALRM 14 Term 来自alarm的计时器到时信号
    SIGTERM 15 Term 终止
    SIGUSR1 30,10,16 Term 用户自定义信号1
    SIGUSR2 31,12,17 Term 用户自定义信号2
    SIGCHLD 20,17,18 Ign 子进程停止或终止
    SIGCONT 19,18,25 Cont 如果停止,继续执行
    SIGSTOP 17,19,23 Stop 非来自终端的停止信号
    SIGTSTP 18,20,24 Stop 来自终端的停止信号
    SIGTTIN 21,21,26 Stop 后台进程读终端
    SIGTTOU 22,22,27 Stop 后台进程写终端
    SIGBUS 10,7,10 Core 总线错误(内存访问错误)
    SIGPOLL Term Pollable事件发生(Sys V),与SIGIO同义  
    SIGPROF 27,27,29 Term 统计分布图用计时器到时
    SIGSYS 12,-,12 Core 非法系统调用(SVr4)
    SIGTRAP 5 Core 跟踪/断点自陷
    SIGURG 16,23,21 Ign socket紧急信号(4.2BSD)
    SIGVTALRM 26,26,28 Term 虚拟计时器到时(4.2BSD)
    SIGXCPU 24,24,30 Core 超过CPU时限(4.2BSD)
    SIGXFSZ 25,25,31 Core 超过文件长度限制(4.2BSD)
    SIGIOT 6 Core IOT自陷,与SIGABRT同义
    SIGEMT 7,-,7 Term  
    SIGSTKFLT -,16,- Term 协处理器堆栈错误(不使用)
    SIGIO 23,29,22 Term 描述符上可以进行I/O操作
    SIGCLD -,-,18 Ign 与SIGCHLD同义
    SIGPWR 29,30,19 Term 电力故障(System V)
    SIGINFO 29,-,- 与SIGPWR同义  
    SIGLOST -,-,- Term 文件锁丢失
    SIGWINCH 28,28,20 Ign 窗口大小改变(4.3BSD, Sun)
    SIGUNUSED -,31,- Term 未使用信号(will be SIGSYS)
    kill、kill -9、kill -3的区别

    经过上面的学习,现在就知道他们的区别了吧。

    kill 会默认传15代表的信号为SIGTERM,这是告诉进程你需要被关闭,请自行停止运行并退出,进程可以清理缓存自行结束,也可以拒绝结束。

    kill -9代表的信号是SIGKILL,表示进程被终止,需要立即退出,强制杀死该进程,这个信号不能被捕获也不能被忽略。

    kill -3可以打印进程各个线程的堆栈信息,kill -3 pid 后文件的保存路径为:/proc/${pid}/cwd,文件名为:antBuilderOutput.log

    总结

    如果是让进程自己执行退出离场程序就使用 kill 命令,这样进程可以自己执行一些清理动作然后退出。如果进程卡死,你需要记录当时的事故现场,那么应该用 kill -3 来记录事故现场的信息然后退出。如果你什么也不需要,就是要杀死一个进程那么就是用 kill -9 命令,很暴力的杀死它。


    ------------
    商业用途请联系作者获得授权。
    版权声明:本文为原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
    作者:任霏
    来源:https://www.renfei.net/posts/1003370
    =======================================================================================

       

      

  • 相关阅读:
    4 行代码实现将文件读到 C++ string
    Adaptive AUTOSAR 学习笔记 15
    Adaptive AUTOSAR 学习笔记 14
    Adaptive AUTOSAR 学习笔记 13
    Adaptive AUTOSAR 学习笔记 12
    Adaptive AUTOSAR 学习笔记 10
    Adaptive AUTOSAR 学习笔记 9
    Linux 彻底卸载从源码安装的 boost 库
    Adaptive AUTOSAR 学习笔记 8
    grep awk sed 正则表达式,只把匹配的内容(不是整个匹配行)提取出来,保存到 shell 脚本变量
  • 原文地址:https://www.cnblogs.com/annatest/p/15066159.html
Copyright © 2011-2022 走看看