Linux命令行具有停止正在运行的进程所需的所有工具。杰克沃伦会告诉你细节。想象一下:您打开一个程序(可能从您的桌面菜单或命令行),并开始使用它,却发现该程序将锁定、停止运行或意外崩溃。您尝试再次运行该程序,但它报告说原来的进程没有完全关闭。你做什么工作?你结束这个过程。但是怎么做呢?信不信由你,大多数最好的解决方案都在命令行中。值得庆幸的是,Linux拥有用户终止错误进程的所有必要工具,但是,在执行终止进程的命令之前,您首先需要知道进程是什么。如何处理此类任务。一旦您掌握了它,它实际上非常简单……让我向您介绍这些工具。我要概述的步骤对于每个Linux发行版、台式机或服务器都是相同的。我将限制自己使用命令行,因此请打开您的终端并开始输入。定位进程终止无响应进程的第一步是定位进程。我使用两个命令来定位进程:top和ps命令。top是每个系统管理员都知道的工具。使用top命令可以知道当前所有正在运行的进程是什么。在命令行中输入top命令,可以看到你正在运行的程序的进程(图1)图1:top命令给了你很多信息。从显示的列表中,您可以看到非常重要的信息。例如,Chrome浏览器响应缓慢。根据我们的top命令,我们可以识别出有四个Chrome浏览器进程在运行,进程的pid号分别为3827、3919、10764和11679。此信息很重要,可以使用一种特殊的方法来结束进程。尽管top命令很方便,但它并不是获取所需信息的最有效方式。你知道你要杀死哪个Chrome进程,你不想看到top命令显示的实时信息。为此,您可以使用ps命令,然后使用grep来过滤输出。这个ps命令可以显示当前进程列表的快照,然后使用grep命令输出匹配模式。我们之所以通过grep命令过滤ps命令的输出,原因很简单:如果只输入ps命令,就会得到当前所有进程的列表快照,而我们需要的是列出Chrome浏览器进程。所以命令看起来像这样:psaux|grepchrome其中aux选项看起来像这样:a=显示所有用户的进程u=显示进程的用户和所有者x=当您搜索图形时,还显示未连接到终端的进程程序信息,这个x参数很重要。当您输入上面的命令时,您将获得比图2更多的信息,它有时比top命令更有效。图2:使用ps命令定位到想要的内容信息。结束进程现在我们开始结束进程的任务。我们有两种信息可以帮助我们杀死错误的进程。进程名ProcessID(PID)你使用哪一个将决定终端命令如何使用,通常有两个命令来杀死一个进程:kill-通过进程ID杀死一个进程killall-通过进程名杀死一个进程有两个区别可以将信号发送到两个命令以结束进程。您发送的信号决定了您希望从结束进程命令中得到什么。例如,您可以将HUP(挂断)信号发送到终止进程的命令,这实际上会重新启动该进程。当您需要立即重新启动进程时(例如在守护进程的情况下),这是一个明智的选择。您可以通过键入kill-l来获取所有信号的列表,您会发现很多信号。图3:可用的结束过程信号。最常用的结束进程的信号有:信号名称单值作用SIGHUP1挂起SIGINT2键盘中断SIGKILL9发送kill信号SIGTERM15发送kill信号SIGSTOP17,19,23很好地停止进程是的,你可以使用信号值而不是信号名称。所以你不必记住所有的各种信号名称。因此,现在让我们使用kill命令终止Chrome浏览器进程。该命令的结构为:killSIGNALPID其中SIGNAL是要发送的信号,PID是要杀死的进程的ID。我们已经从ps命令中知道我们要杀死的进程ID号是3827、3919、10764和11679。因此要发送杀死进程信号,我们输入以下命令:kill-93827kill-93919kill-910764kill-911679一旦我们输入上述命令,Chrome浏览器的所有进程将被成功杀死。我们有更简单的方法!如果我们已经知道要杀死的进程的名称,我们可以使用killall命令发送相同的信号,如下所示:killall-9chrome作为旁注,上述命令可能无法捕获所有正在运行的Chrome进程。如果在运行上述命令后,输入psaux|grepchrome命令过滤查看剩余运行的Chrome进程,最好的办法是返回kIll命令通过进程ID发送信号值9结束进程。终止进程很容易如您所见,终止不良进程并不像您想象的那样具有挑战性。当我想杀死一个顽固的进程时,我倾向于使用killall命令作为杀死它的有效方法,但是,当我想杀死一个真正活跃的进程时,kill命令是一个不错的选择。
