zoukankan      html  css  js  c++  java
  • 信号_kill和pkill命令

    kill和pkill命令

    • (1)为什么当进程收到某些信号是,会被终止呢?

      • 1) 比如Ctrl+C 发送SIGINT给进程时

      • 2)比如操作一个错误地址,内核发送SIGSEGV信号给进程时

      • 3)比如Ctrl+ 发送SIGQUIT信号给进程时

      • 4)比如在命令行使用kill pid,默认发送SIGTERM信号给进程时。

      • 因为你发送的这些信号的处理方式是终止,所以进程被终止掉了。

    • (2)kill命令

      • 1)kill的作用

        • (a)kill -l :查询信号列表

        • (b)通过PID想进程发送一个信号

          • kill只是发送信号,至于进程会不会被终止,这就要看信号的处理方式,处理方式如果是终止,那么就会终止进程。所以进程是否会被信号终止,是由信号的处理方式来决定的,而不是kill命令,当初起名字的时候,如果把kill起名为send估计更好理解写,因为kill所起到的左右只是发送信号。

          • 发送信号的完整格式:kill -信号编号 PID

          • 信号编号写数字和宏名都可以。

          • 如果不写明信号编号的话:kill PID,默认发送的是15(SIGTERM)信号,等于kill -SIGTERM PID 或者 kill -15 PID

          • 只有发送15这个信号时才能省略信号编号,发送其他信号时必须写明信号编号。

        • (c)为什么kill发送15(SIGTERM)这个信号时,信号编号可以省略?

          • 我们说每个信号都有自己的特有用途。当初定义15(SIGTERM)信号的目的就是专门给我们从命令行终端窗口,发送该信号去终止某个进程用的,也就是说如果你想在命令行使用kill命令去中断某个进程时,专用信号就是15。

          • 其实一般只要默认处理方式是终止信号,我们都可以使用kill命令将其发送给某个进程,这些信号都可以将进程终止掉,但是既然每个信号有自己的专门用途,那么在命令行去终止某个进程时,我们最好是使用专门的SIGTERM信号。这样显得更专业些

          • 为了方便我们使用,Linux允许发送15这个信号时,不设置信号编号,kill pid时会帮你默认发送这个信号。

          kill -SIGINT PID 不能终止命令行终端,只能终止占用命令行终端的进程。

      • 2)pkill

        • kill命令的兄弟,用法与kill差不多,只不过kill是按照PID来识别进程的,pkill是按照名字来识别进程的。

        • pkill -信号编号 名字 :pkill -SIGTERM a.out

        • 同样的,如果不写明信号编号的话,默认发送的是15(SIGTERM)这个信号。

  • 相关阅读:
    MarkDown语法
    AxureRP 序列号
    数据库选型相关
    linux 防火墙
    SpringMVC控制器方法参数传入的ModelMap 和Model类型有啥区别
    2017中国软件技术大会参会总结
    SpringMVC的Model ModeMap ModelAndView @ModelAttribute @SessionAttribute区分
    mybatis调用oracle存储过程 out游标类型参数 如何赋给java map
    mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析
    mybatis 调用oracle存储过程如何返回out参数值
  • 原文地址:https://www.cnblogs.com/doitjust/p/12622400.html
Copyright © 2011-2022 走看看