命令行工具 Kill
> 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信号,这会导致进程终止并且将内存中的信息转存到硬盘。
比较常用的信号是SIGTERM
和SIGKILL
,数值编号分别对应15和9。应用程序可以捕获前者信号,并进行处理或忽略,但是对于后者则会直接结束进程,应用程序无法干扰它。因此如果要优雅关闭服务,需要用SIGTERM信号,但是要对付一个无响应的应用程序,则需要使用SIGKILL命令。