无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭。在linux(还有mac),你可以用一个"kill"命令强制终结它。在这个教程中,我们将展示给你多种方式使用"kill"命令终结应用。
<a target="_blank"></a>
当你执行一个"kill"命令,你实际上发送了一个信号给系统,让它去终结不正常的应用。总共有60个你可以使用的信号,但是基本上你只需要知道sigterm(15)和sigkill(9)。
你可以用这个命令看到所有信号的列表:
<code>kill -l</code>

sigterm - 此信号请求一个进程停止运行。此信号是可以被忽略的。进程可以用一段时间来正常关闭,一个程序的正常关闭一般需要一段时间来保存进度并释放资源。换句话说,它不是强制停止。
sigkill - 此信号强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。
使用"kill"的语法是:
<code>kill [信号或选项] pid(s)</code>
默认信号(当没有指定的时候)是sigterm。当它不起作用时,你可以使用下面的命令来强制kill掉一个进程:
<code>kill sigkill pid</code>
或者
<code>kill -9 pid</code>
这里"-9"代表着sigkill信号。
如果你不知道应用的pid,仅需要运行这个命令:
<code>ps ux</code>
它会显示所有正在运行的应用还有应用的pid。
例如,要kill掉chrome,我会运行命令:
<code>kill -9 3629</code>
也可以在同一时间kill多个进程。
<code>kill -9 pid1 pid2 pid3</code>
"pkill"命令允许使用扩展的正则表达式和其它匹配方式。你现在可以使用应用的进程名kill掉它们,而不是使用pid。例如,要kill掉firefox浏览器,只需要运行命令:
<code>pkill firefox</code>
使用正则表达式匹配的话,你可以输入进程名的部分字符,比如:
<code>pkill fire</code>
为了避免kill掉错误的进程,你应该用一下"pgrep -l [进程名]"列表来匹配进程名称。
killall同样使用进程名替代pid,并且它会kill掉所有的同名进程。例如,如果你正在运行多个firefox浏览器的实例,可以用命令把它们全部kill掉:
<code>killall firefox</code>
在gnome中,你可以使用这个命令重启nautilus:
<code>killall nautilus</code>
当应用不正常而导致系统挂起的时候,人们往往重启计算机并且再一次开启所有的任务。而有了这些"kill"命令,你将能够更好的处理不正常的应用,从而避免导致系统崩溃。当你不想因一个不正常的进程而导致服务器宕机时,它尤其的有用。
原文发布时间为:2013-10-17
本文来自云栖社区合作伙伴“linux中国”