我们都曾有过这样的日子,我们的计算机运行异常缓慢,甚至在执行基本任务时也会卡顿。 在 Windows 中,您只有 Windows 任务管理器来检查和终止那些不太重要但消耗大量内存的进程。 然而,在 Linux 中,您拥有一整套命令和 GUI 工具来管理这些任务。 在本文中,我们将展示一些简单的命令行 (CLI) 方法以及 GUI 方法,以了解如何在 Linux 中终止进程。
在 Linux 中终止进程 (2023)
但在我们深入 Linux 中的进程管理世界之前,让我们了解进程到底是什么以及 Linux 系统中的进程 ID 是什么。
什么是 Linux 中的进程
在 Linux 中,每个当前运行的程序实例都称为“进程”,而每个可执行文件都称为程序。 当执行任何程序时,都会创建一个进程,并且每个进程都会分配一个唯一的 5 位标识号,称为“进程 ID”。 当一个进程完成执行或被强制终止时,它的进程 ID 被分配给下一个在线进程。
在 Linux 中通过命令行终止进程
尽管与使用 GUI 工具执行基本任务相比,使用终端有时看起来令人生畏,但是一旦您掌握了命令及其各种选项,管理各种进程就会变得容易得多。
终止信号
当您尝试从 Linux 中的 GUI 或 CLI 终止进程时,内核会向该进程发送终止信号。 该过程根据接收到的信号采取相应的行动。 这些信号中的每一个都被分配了一个特定的编号,以便程序快速理解。 终止信号有很多种,但我们在这里只解释了基本的那些:
Signal数值说明SIGHUP1代表’Signal Hangup’
当终端关闭时发送。SIGINT2代表’Signal Interrupt’
它在用户终止进程时发送。SIGKILL9代表’Signal Kill’
当您需要立即退出进程时发送 SIGTERM15 它代表“信号终止”
当您需要终止进程并释放消耗的资源时发送它 SIGSTOP19 – 对于 ARM,x86
17 – 阿尔法
23 – 对于 MIPS
24 – 对于 PA-RISCI,它代表“信号停止”
当您需要暂停进程并稍后恢复时发送它。最常用的信号是 SIGKILL (9) 和 SIGTERM (15)。
识别进程 ID
在终止一个进程之前,你需要知道进程的一些详细信息,比如进程ID、运行时间等。要了解进程的详细信息,使用ps命令:
附言
使用 ps 命令,您需要通过滚动并注意其名称来搜索进程,这可能很麻烦。 相反,您甚至可以在管道中使用 grep 命令和 ps 命令,如下所示:
附注 | grep <进程名>
为了使事情更简单,有一个单独的命令只显示您需要知道的任何正在运行的进程的进程 ID。 使用 pidof 命令的语法是:
pidof <进程名称>
使用 kill 命令终止进程
一旦记下要终止的进程的进程 ID,在 Linux 系统上用于终止程序的最常用命令就是 kill 命令。 使用 kill 命令的语法是:
kill
使用 pkill 命令终止进程
如果觉得查找进程id不方便,可以使用pkill命令。 它查找与模式匹配的进程,然后将其杀死。 使用 pkill 命令的语法是:
pkill <选项> <模式>
与 pkill 命令配对的一些常见选项是:
选项描述-n只选择与进程id匹配的最新进程-u选择特定用户拥有的进程-x选择与模式完全匹配的进程
当多个用户在同一系统中处理同一程序的不同实例并且其中一个实例开始出现一些意外行为时,这一点尤为重要。 例如,在下面的屏幕截图中,我们在 Linux 中使用 pkill 命令杀死用户“intel”拥有的“gedit”实例:
pkill -u 英特尔 gedit
使用 killall 命令终止进程
killall 命令的工作方式与 kill 命令类似,但它会杀死与进程名称匹配的所有进程,而不考虑用户。 默认情况下,如果没有另外指定,它会发送 SIGTERM 信号。 需要注意的一件有趣的事是 killall 命令永远不会杀死自己,但可以终止 killall 命令的其他实例。 使用 killall 命令的语法是:
killall <选项> <进程名称>
与 killall 命令配对的一些选项是:
选项描述-r将process_name解释为正则表达式模式,然后杀死匹配该模式的进程-ukills指定所有者拥有的指定进程。-o杀死比特定时间更早(之前启动)的指定进程。-y杀死较年轻的指定进程(开始后)具体时间。
killall 命令可用于终止一系列相同的进程,甚至终止特定所有者拥有的所有进程。 在我们的示例中,我们在 Linux 中使用 killall 命令杀死所有“休眠 500 秒”的进程:
killall -v 睡眠
使用 top/ htop 命令终止 Linux 进程
当您不知道哪些进程正在消耗最大资源时,这种终止进程的方法很有用。 在这两个命令中,您都可以浏览所有正在运行的进程甚至僵尸进程,并可以快速结束它们。 要使用 top 命令监控您的资源,请使用终端中的语法:
顶部
了解输出:
top 命令的主要输出分为以下几列:
- D——不间断睡眠
- R——跑步
- S——睡觉
- T——停止
- Z——僵尸
如果您不知道要终止的任务的进程 ID,请使用箭头键浏览列表或在 Linux 的进程表中搜索进程名称。
要搜索进程名称,请按键盘上的“L”并输入要搜索的进程名称。 找到恶意进程后,按键盘上的“k”键即可终止该进程。 现在,输入进程 ID 或将其保留在当前突出显示的进程中,然后按“ENTER”。 接下来,输入终止信号,然后按“ENTER”键终止程序。 要返回终端,请按键盘上的“q”。
尽管 top 命令显示了所有正在运行的进程的详细信息,例如进程 ID、内存消耗等,但它不太适合初学者,因为它不显示任何键映射或如何使用它。 另一方面,htop 命令具有更加用户友好的界面,即使对于命令行工具也是如此。 此外,它在单独的视图中显示所有详细信息,因此不会使终端窗口混乱。 大多数发行版都没有预装它,您需要使用以下命令在 Linux 中安装 htop:
sudo apt install -y htop
要在 Linux 中使用 htop 管理进程,请使用以下命令:
顶层
要终止程序,请导航到要终止的进程名称,按“F9”,然后按 Enter。 如果您需要搜索并杀死任何程序,请按键盘上的“F3”,输入名称并按 Enter。 进程名称会高亮显示,按F9,然后按键盘上的Enter键终止进程。
在 Linux 中通过系统监视器终止进程
如果您觉得命令行方法对您来说有难度,您可以使用每个 Linux 发行版都提供的内置系统监控工具。 要了解它是如何工作的,请从“应用程序”菜单中打开系统监控工具,然后按照以下步骤操作。
1. 系统监控工具打开后,您将在顶部看到三个选项卡,名称分别为:进程、资源和文件系统。 要管理您的流程,请转到“流程”选项卡。 在这里,您将看到所有当前正在运行的进程。 按“CTRL+F”搜索进程名称。 单击要终止的进程名称,然后单击“结束进程”。
2. 然后,您将收到是否要结束进程的确认提示。 继续并单击红色的大“结束进程”按钮以终止 Linux 中的进程。
经常问的问题
如何停止 Linux 中的所有进程?
如果您需要为 Linux 中的特定用户停止所有进程(登录 shell、init 和内核特定进程除外),请按照语法使用 pkill 命令或 killall 命令:
pkill -u <用户名>
killall -u <用户名>
如果您需要为包括 init 系统在内的每个用户终止所有进程,请按键盘上的“ALT + Prt Sc + o”键。
结束一个进程可以吗?
当您关闭任何非必要的后台进程或消耗大量系统内存的用户进程时,您释放了现在可供其他进程使用的资源。 但是,在关闭任何进程之前,请确保您没有终止必要的操作系统进程。
Linux 中的后台进程是什么?
在 Linux 中,后台进程是可以在没有 shell 实例或任何用户干预的情况下运行的进程。 可以使用任何命令查看它们——top、htop、ps 等。
什么是僵尸进程?
一个已经被用户杀死但仍然占用内存的进程被称为僵尸进程。
CTRL + Z 在 Linux 中有什么作用?
当您在 Linux 中使用 CTRL + Z 时,它会发送 SIGTSTP 信号,该信号会暂停进程并在后台发送。 当一个进程在后台处于挂起状态时,您不能杀死该进程,直到它被带回前台。
轻松杀死 Linux 中的进程
杀死内存占用进程是每个用户都应该学习的一项非常重要的任务。 在本文中,我们展示了命令行方法,包括 killall 和 pkill 等命令,以及用于在 Linux 中终止进程的 GUI 方法。 我们甚至详细介绍了如何使用 top 和 htop 等流行工具来管理 Linux PC 上的进程。 如果您在使用这些工具终止进程时遇到任何问题,请在下面的评论中告诉我们。