命令行工具 Kill

Published: by Creative Commons Licence

  • Tags:
> kill [-(SignalName|SignalNumber)] ProcessID...

像ProcessID指定的进程发送信号(缺省为SIGTERM)。ProcessID是十进制整数,它有以下特殊逻辑:

  • ProcessID>0,那么仅将信号发送到ProcessID对应的进程。
  • ProcessID=0,发送到除了PID为0和1外的其它所有处于发送者进程组中的进程。
  • ProcessID=-1,发送到有效用户的所有的进程,除了PID为0和1外。
  • ProcessID<-1,发送到进程组标识位|ProcessID|的所有进程。

上面的方法是通过PID来杀死进程,我们也可以通过作业编号来杀死进程。

> jobs
[1]+  Stopped
> kill %1
[1]+  Terminated
> kill -l [ExitStatus]

显示支持的所有信号名称。如果指定了ExitStatus(十进制整数),那么仅显示与ExitStatus匹配的信号名称。

在控制终端输入特定的组合键可以向它发送某些信号:

Ctrl+C:发送INT信号,默认情况下,这会导致进程终止。

Ctrl+Z:发送TSTP信号,默认情况下,这会导致进程挂起。

Ctrl+\:发送QUIT信号,这会导致进程终止并且将内存中的信息转存到硬盘。

比较常用的信号是SIGTERMSIGKILL,数值编号分别对应15和9。应用程序可以捕获前者信号,并进行处理或忽略,但是对于后者则会直接结束进程,应用程序无法干扰它。因此如果要优雅关闭服务,需要用SIGTERM信号,但是要对付一个无响应的应用程序,则需要使用SIGKILL命令。