如何终止或终止 Linux 进程:终极指南

您所在的位置:网站首页 系统结束进程快捷键命令 如何终止或终止 Linux 进程:终极指南

如何终止或终止 Linux 进程:终极指南

2024-04-08 18:40| 来源: 网络整理| 查看: 265

如何终止或终止 Linux 进程:终极指南

Linux 和 BSD 等多处理操作系统采用多种方法来最大化 CPU 利用率。进程只是一个正在执行的程序。由于在给定时间会运行多个 Linux 进程,因此 Linux 中的进程管理极其重要。当运行太多程序时,用户经常会遇到CPU资源限制等问题。当 CPU 无法处理不断增加的进程时,就会出现这种情况。尽管这并不完全取决于 CPU 的能力,但处理挂起或僵尸进程可能会非常令人沮丧。为了帮助您减少此类情况的发生,我们概述了一些终止这些进程的标准方法。

掌握 Linux 中的无响应进程管理

您将学习几种终止完全不响应的 Linux 进程的方法。如果您来自 Windows,您可能熟悉 Ctrl+Alt+Delete。同样,Mac 用户可以使用 Command+Option+Escape 方法来终止冻结的进程。 Linux 比同类产品更加通用,并且提供了不止一种方法来处理死机/无响应的进程。

杀死死掉的 Linux 进程的不同方法

我们将主要概述两种杀死僵尸进程的方法。我们将使用 Linux 终端作为第一种方法。为此,我们首先需要识别进程 ID。一旦成功获取,我们就可以使用这个PID,通过向该PID发送特定信号来杀死程序。

您还将了解如何从图形用户界面或 X 窗口执行此类 Linux 终止作业。为此,我们将利用 Ubuntu 中提供的“系统监视器”应用程序。尽管这是一个 GNOME 应用程序,但类似的工具也可用于其他 Linux 桌面环境。

从命令行终止无响应的进程

有多种工具可用于从命令行终止无响应或挂起的进程,包括 kill、pkill 和 killall。这些命令通过向这些无响应的进程发送特定信号来工作。您将需要进程 ID 或 PID 信息,以便可以向它们发送所需的终止信号。

PID 或进程 ID 是标识进程的唯一编号。它们是由 Linux 内核在运行时创建的,进程调度程序控制它们的 CPU 活动。因此,每当您调用应用程序时,内核都会首先生成必要的进程并为它们分配这些唯一的 PID 值。一个进程可以有多个关联的 PID。此外,每个进程都有一个具有唯一 PPID(父进程 ID)的父进程。

因此,如果您可以找到此 PPID,那么您将能够使用为此目的设计的程序发送终止信号。下面您将学习如何检查 Linux 中正在运行的进程并从终端识别其 PPID。

查找 PPID 信息

您可以使用 Linux 中的多个进程管理命令(例如 pidof、pstree 和 pgrep)找出进程的 PPID。让我们一一分析,看看如何获取Linux进程的PID。

方法一:使用 ps 命令

Linux 中的 ps 命令显示所有正在运行的进程以及其他进程相关信息,例如终端中的 PID。我们可以使用该命令列出所有进程,然后使用 Linux grep 命令过滤掉特定进程。它应该向我们显示我们感兴趣的进程 ID 信息。

$ nano > /dev/null &$ ps aux | grep "nano"

首先,我们在后台调用了 Linux 文本编辑器。然后我们使用 ps 命令和 grep 命令来查找该编辑器的 PPID。输出可能包含多个进程 ID,但我们只对第一个进程感兴趣,因为那是我们的 PPID。我们还可以使用 Linux awk 命令来查找这些信息,如下所示。

$ ps aux | awk '/nano/ {print $2}'

该命令更加灵活,因为它抑制所有不相关的信息。它只会显示我们正在查找的 PPID 信息。

方法2:使用pstree命令

pstree 命令为我们提供了所有正在运行的进程的树状视图。它从终端窗口提供 Linux 任务列表的图形视图。您可以使用此命令查看 PPID 以及进程的所有 PID 信息。查看以下示例,了解如何利用 pstree 查找特定进程的 PPID。

$ nano > /dev/null &$ pstree -p | grep 'nano' $ pstree -p | awk '/nano/ {print $NF}'

首先,我们使用第一个命令在后台生成了一个进程。然后,第二个命令使用 Linux 中的 grep 命令检索该进程的 PPID。最后,第三个命令向我们展示了如何使用 awk 命令检索该值。

方法3:使用pgrep命令

pgrep 命令是 Linux 中最简单的进程管理命令之一。它检查所有正在运行的进程的列表,并在标准输出或本例中的终端中打印出给定进程的 PPID。它通过执行正则表达式匹配来工作,非常适合编写 Linux shell 脚本。

$ nano > /dev/null &$ pgrep 'nano'

我们已经产生了与之前的例子类似的纳米工艺。然后我们使用 pgrep 命令获取了它的 PPID。一旦我们获得了这个值,我们就可以很容易地执行 Linux 的终止工作。

方法四:使用pidof命令

pidof 命令是确定 Linux 进程的 PPID 的另一种简单但有用的方法。它显示 PPID 以及与进程关联的所有其他 PID。查看下面的检查,了解如何在实践中使用它。

$ nano > /dev/null &$ pidof nano $ pidof -s nano

在Linux中使用pidof命令检查正在运行的进程时,经常会看到多个PID。通常,在这种情况下,第一个或最后一个数字是 PPID,具体取决于它们是按升序还是降序排列。您可以使用 pidof 的 -s 选项来缓解这种情况。它将仅显示 PPID 值。

方法5:使用top命令

top 命令提供类 Unix 操作系统中所有正在运行的进程的实时视图。您可以使用它在终端中显示 Linux 任务列表并找出特定进程的 PID 信息。

$ top

使用以下命令从 top 命令的输出中检索特定进程的 PPID。

$ nano > /dev/null &$ top -n1 -b | grep 'nano' $ top -n1 -b | awk '/nano/ {print $1}'

由于 top 提供实时输出而不是将静态数据转储到终端,因此我们使用 -n1 和 -b 选项来打印静态输出。然后,您可以在 Linux 中使用 grep 命令或 awk 命令检索 PPID 信息。

终止无响应的 Linux 进程

您可以使用上述任何方法来检索无响应进程的 PPID。一旦获得此信息,就该完全终止该进程了。有几个命令允许我们执行此操作,例如 kill、pkill 和 killall。我们将在下面的部分中一一了解它们是如何工作的。

方法一:使用kill命令

由于其简单性和强大的操作,kill 命令被 Linux 管理员广泛使用。它需要进程的 PID 和信号。内核根据此信号终止/停止进程的执行。您可以使用下一个命令来查看kill命令的所有可用信号。

$ kill -l

正如您所看到的,kill 提供了 64 种不同的信号。但是,我们将在本指南中仅讨论其中两个。它们是信号 9(SIGKILL) 和信号 15(SIGTERM)。 SIGTERM 或信号 15 是终止无响应进程的安全方法。另一方面,SIGKILL 或信号 9 会强制终止 Linux 进程。

$ kill -9 8631 $ kill -KILL 8631

上面的命令是等效的,它们会强制杀死 PID 为 8631 的进程。这是我系统中进程“nano”的 PPID。将其替换为系统中无响应进程的 PID。

$ kill -15 8631 $ kill -TERM 8631

上面的命令也是等效的,并且会优雅地终止进程。这就是为什么进程被终止可能需要一些时间。此外,如果进程由其他用户拥有,您可能需要在kill命令之前附加sudo。

方法2:使用pkill命令

pkill 命令是 Linux 中最通用的进程管理命令之一。它允许我们根据进程的名称、PID、所有者和其他运行时属性来终止无响应的进程。对于初学者或不熟悉许多标准终端命令的人来说,它是一个完美的工具。

$ pkill nano $ pkill 8631 $ pkill -e nano $ pkill -f nano

您可以使用上述任何 pkill 命令来终止 Linux 中的僵尸/无响应进程。如果您想确认 Linux 终止作业,请使用 -e 选项。 pkill 命令还允许用户发送特定的终止信号。

方法三:使用killall命令

Killall 命令允许用户根据名称杀死无响应的进程。它使用起来更容易,但如果不小心的话可能会带来麻烦。由于 Killall 根据名称终止进程,因此您总是有可能偶然终止进程。例如,如果您的系统中有不同版本的 nano 可用,第一个示例将杀死所有版本。

$ killall nano $ killall --verbose nano $ killall --interactive nano $ killall --signal KILL nano

第一个示例显示了 Linux 中 Killall 命令的基本用法。第二个命令将报告终止作业是否成功,第三个命令将在终止进程之前要求用户确认。默认情况下,killall 使用 SIGTERM 信号来终止进程。但是,您可以手动指定信号,如上一个示例所示。

方法 4:使用方便的单线

Linux 的真正美妙之处在于它允许用户根据自己的需要创建复杂的命令组合。为了证明这一点,我们在本节中概述了一些俏皮话。

$ nano > /dev/null &$ kill -9 $(pgrep nano) $ ps aux | grep -e 'nano' | awk '{print $2}' | xargs kill -9

在第一个示例中,我们使用 shell 插值将进程“nano”的 PID 传递给 Linux Kill 命令。第二个示例利用几个日常终端命令和 I/O 重定向来终止进程。一旦您熟悉了 Linux 终端,您就可以策划自己的俏皮话了。

方法5:使用Linux Shell脚本杀死多个进程

有时用户可能想要终止多个进程。我们可以通过编写简单的 shell 脚本轻松自动化此类任务。如果您对此主题感兴趣,请查看我们之前的 Linux shell 脚本指南。以下脚本将检索要终止的进程的 PPID,然后使用终止信号终止它们。

$ nano proc-killer.sh#!/usr/bin/env bash for pro in "$@" do pid=$(pgrep $pro | head -1) echo $pid comm="kill -9 $pid" eval $comm done

现在,保存该文件并通过发出以下命令添加执行权限。

$ chmod +x proc-killer.sh

现在,您可以向此脚本传递要终止的进程的名称。

$ ./proc-killer.sh nano gedit vlc

只需将参数替换为系统中无响应的 Linux 进程的名称即可。

从 GUI 终止无响应的进程

您还可以从图形用户界面或 X 窗口终止无响应的进程。我们在下一节中讨论执行此操作的两种方法。

方法1:使用xkill应用程序

现代 Linux 发行版利用 X 图形窗口为用户提供优雅的图形体验。有一个名为 xkill 的简单工具,允许用户关闭无响应的 GUI 窗口。这是可能的,因为在 Linux 中,应用程序的标题窗口与应用程序本身是分开的。

只需转到 Linux 终端模拟器并输入 xkill 即可。它将把你的鼠标光标变成一个 X 按钮,可以用来杀死任何 GUI 窗口。

$ xkill

现在,您只需单击无响应的应用程序的窗口栏,它就会立即被杀死并消失。

方法2:使用Ubuntu上的系统监视器应用程序

大多数主流 Linux 发行版都附带某种 GUI 监控工具,允许用户以图形方式终止挂起的 Linux 进程。例如,Ubuntu 上的系统监视器应用程序将使我们能够以直观的方式终止无响应的进程。您只需从进程列表中选择已死亡的进程,然后右键单击该进程并选择“终止”选项即可终止它。

该应用程序还有更多替代方案,我们确信您可以轻松找到适合您的发行版或桌面环境的替代方案。

结束想法

由于 Linux 中的进程管理非常通用,因此用户在处理无响应的进程时常常会感到沮丧。这就是为什么我们的编辑在本指南中概述了终止死 Linux 进程的所有可能方法。阅读本文后,您应该能够从命令行或 GUI 终止任何无响应的进程。您还可以使用我们的任何一行命令在尽可能短的时间内处理此类麻烦。此外,您甚至可以使用我们简单的 shell 脚本杀死多个进程。希望您从我们的指南中获得了所需的信息。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3