Linux进程控制命令之kill与killall

  • kill命令
    kill用于杀死进程,其基本使用方式为:kill -n PID,n代表一个数字,这个数字是某个信号的编号。

    • -l参数用于列出所有支持的信号名称。

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

      好像还挺多,不过绝大多数平时用不上。每个信号对应一个数字,就是它们前面的那个编号。常用的就这么几个:1,2,3,9,15。它们的意义是:
      1)SIGHUP: 使进程挂起。 2)SIGINT: 中断一个进程,类似与从键盘上按下crtl + c。 3)SIGQUIT:
      退出。 9)SIGKILL: 强制中断一个进程。终极手段,慎用。 15) SIGTERM: 正常终止一个进程。
      我个人感觉,一般情况下使用15来正常终止一个进程,它不管用了再使用9。1、2、3很少使用,我还没弄清它们之间的区别,先挖个坑吧。
      -l 后面还可以跟参数,用于信号和它对应的数字之间的转换,如下:

      m@meng:~/blog$ kill -l SIGQUIT
      3
      m@meng:~/blog$ kill -l 3
      QUIT
      m@meng:~/blog$ kill -l QUIT
      3

    从这里可以看出,信号有三种表示方式:数字编号,信号全名和信号简称。

    • kill后面可以直接跟PID,这时将发送默认的-15信号给进程。
    • -u参数用来指定特定用户相关的进程。
    • man上说,kill -9 -1可以 Kill all processes you can kill,我没试。
    • man上还说,有一个数字0,也可以当做信号编号,但是没有指明对应哪个信号。我试了一下,类似于15。
  • killall命令
    使用kill命令的时候需要PID,但是我们一般只知道启动进程的程序或命令名字,所以要先用ps结合grep查找对应的PID。killall可以简化这个过程,直接在killall后面跟相应 的命令即可,它会杀死所有使用这个命令名或程序名的进程。
    killall有几个有用的参数,如-I、-i、-e,详细信息查看一下man就好,比较简单。

你可能感兴趣的:(Linux)