kill和killall:向进程发送信号

我就是我 2023-06-11 03:20 75阅读 0赞

简介

在运行linux程序时,当遇到需要结束某一特定进程的情形,kill和killall命令便成为了首选.它们本质上都是通过向进程发送信号来操纵进程的行为的.


安装

在centos7上,kill命令已系统自带,而killall命令在minimal版本下则需事先安装psmisc软件包才能使用,此软件包还附带fuser,pstree等命令(注:这3个命令都用于管理/proc目录)


使用

  • kill

    ]# 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

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8

其中常用的信号有2号中断信号,9号杀死信号,15号杀死信号(gentle)

  1. ]# ps aux|grep nginx
  2. root 12367 0.0 0.2 122916 2116 ? Ss 17:20 0:00 nginx: master process /usr/sbin/nginx
  3. nginx 12368 0.0 0.3 123380 3144 ? S 17:20 0:00 nginx: worker process
  4. nginx 12369 0.0 0.3 123380 3140 ? S 17:20 0:00 nginx: worker process
  5. root 12371 0.0 0.0 112664 972 pts/1 S+ 17:20 0:00 grep --color=auto nginx
  6. ]# kill -9 12367 12368 12369
  7. 1
  8. 2
  9. 3
  10. 4
  11. 5
  12. 6

强行结束所有nginx进程.kill命令往往需配合ps命令使用以便知道进程pid
- killall

  1. ]# killall -9 nginx
  2. 1

killall命令依据进程的名称发送信号,因此不需要事先使用ps命令查看pid,可以认为是kill命令的增强版.此外,它还可以依据用户名,正则表达式等多种方式来限定进程


补充

kill和killall命令除了能发送既有的信号意外,还能发送特殊的0信号.该信号不对进程做任何干预,仅仅是确定该进程是否存在而已.因此往往被用于集群服务中确认某一服务是否正常运行

  1. ]# killall -0 nginx
  2. ]# echo $?//若返回0,则nginx进程正常运行,若返回1,则nginx服务已停止
  3. 1
  4. 2
  5. <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet">
  6. </div>

发表评论

表情:
评论列表 (有 0 条评论,75人围观)

还没有评论,来说两句吧...

相关阅读

    相关 杀死进程killall

    > killall可以根据名字来杀死进程,它会给指定名字的所有进程发送信息。如果没有指定信号名,则发送SIGTERM。信号可以通过名称(例如-HUP或-SIGHUP)或数字(例