使用这些 Linux 命令强制退出行为不端的进程
用最简单的词来解释“进程”的含义是它是系统上任何应用程序或程序的运行实例。您可能同时运行多个应用程序,例如在终端上浏览、听音乐等。有许多与这些应用程序相关的后台进程由用户运行。
在您的系统上运行的每个应用程序或程序都会创建与您的单个应用程序相关联的多个进程。有时这可能是一个问题,摆脱这些过程是您唯一的选择。
“杀死”进程是 Linux 提供的一个有用选项,可以停止正在进行的进程,无论是前台进程还是后台进程。在本文中,我们将回顾如下命令 杀
, 杀戮
和 全杀
强制退出系统上的任何进程。
为什么要杀死一个进程?
在继续本教程之前,了解终止进程的概念很重要。杀戮似乎是一种非常残酷的表达方式,但它的象征意义是强行中止一个过程。
现在,为什么要中止或退出正在进行的过程?当多个进程在后台运行时,它们中的全部或少数可能会出现故障,并可能导致您的系统行为异常。这会延迟您正在进行的任务,因为故障过程可能会冻结您的系统一段时间。
有时,退出所有行为不端的进程似乎是恢复系统正常状态的唯一选择。 Linux 允许您使用 进程号
或进程名称。
使用 pgrep
命令
大多数 Linux 用户都熟悉 格雷普
命令。这 pgrep
命令可以在类似的行上使用 格雷普
.
pgrep
命令使用时,显示 进程号
命令中指定的正在运行的进程。此命令在使用时证明非常有用 杀戮
命令。
一般语法:
pgrep [选项] [模式]
可用的重要选项 pgrep
命令
选项 | 描述 |
-u | 列出特定用户拥有的进程 ID |
-C | 计算匹配进程数 |
-一世 | 仅列出进程名称 |
-一个 | 列出进程名称的完整路径 |
让我们演示一下使用 pgrep
命令使用示例。
pgrep -u gaurav 侏儒
在这里,我们希望看到 pids
用户“gaurav”拥有的进程 gnome。选项 -u
允许您列出 pids
特定用户拥有的进程。在这种情况下,用户 gaurav。
输出:
gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$
随着我们继续本教程, pgrep
命令将帮助我们确认进程是否已被终止或仍在运行。
现在让我们转到 杀戮
命令及其执行。
使用 杀戮
命令
您可以使用 杀戮
Linux 中的命令使用进程名称终止进程。即使你不知道 进程号
某些进程,即使这样你也可以使用 杀戮
命令。
进程可以用它们的全名或部分名称来指定,同时使用 杀戮
命令。即使您输入进程的部分名称, 杀戮
命令会将所有正在运行的进程与您在命令中输入的匹配名称匹配。
句法:
pkill [选项][process_name_pattern]
例子:
让我们使用 最佳
命令。您还可以使用 ps
命令列出进程。
最佳
top - 14:24:02 up 3:12, 1 user, load average: 0.29, 0.48, 0.58 任务:总共 221 个,1 个运行,172 个睡眠,0 个停止,1 个僵尸 %Cpu(s):5.6 us,1.0 sy , 0.0 ni, 92.9 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 总共 3928240, 610456 免费, 2233152 已用, 1084632 buff/cache 已用 08840874 KiB Swap, 0.0 st KiB 内存: 1187268无济于事纪念品PID USER PR NI VIRT RES SHR S%CPU%MEM TIME + COMMAND 4077拉夫20 0 3312128 673480 118360小号19.6 17.1 15:13.23 Web内容3712拉夫20 0 3953008 453544 116476š4.0 11.5 9:28.39 MainThread 2010拉夫20 0 4084232 111096 45024š1.7 2.8 3:14.85侏儒 - 壳1197根部20 0 1039612 33704 22988小号1.0 0.9 3:04.42的Xorg 1426 CouchDB的20 0 3772396 16908 2520š0.7 0.4 1:50.83 beam.smp 3288拉夫20 0 722480 25048 18272小号0.7 0.6 0:06.84侏儒端 - 3915拉夫20 0 2804900 231524 111228š0.7 5.9 0:54.42 Web内容4146拉夫20 0 3017924 245304 120604š0.7 6.2 2:01.21 Web内容4417拉夫20 0 2964208 234396 119160š0.7 6.0 0 :59.90 网页内容 4860 gaurav 20 0 3066800 372920 132544 S 0.7 9.5 0:48.20 网页内容 16007 gaurav 20 0 41944 3780 3116 R.1087: top
使用 最佳
命令将在您的终端上显示多个进程。让我们尝试使用特定名称显示进程。我们将使用 格雷普
命令显示名称与字符串“mongo”匹配的进程。
顶部 | grep -i mongo
笔记: 在这里,我使用了 -i 选项使搜索不区分大小写。
此命令的输出将显示与名称“mongo”匹配的进程
1158 mongodb的20 0 288564 4848 1320š0.7 0.1 1:03.22的mongod 1158 mongodb的20 0 288564 4848 1320š1.0 0.1 1:03.25的mongod 1158 mongodb的20 0 288564 4848 1320š0.7 0.1 1:03.27的mongod 1158 mongodb的20 0 288564 4848 1320小号0.7 0.1 1:03.29的mongod 1158 mongodb的20 0 288564 4848 1320š0.7 0.1 1:03.31的mongod 1158 mongodb的20 0 288564 4848 1320š0.7 0.1 1:03.33的mongod 1158 mongodb的20 0 288564 4848 1320š1.0 0.1 1:03.36的mongod 1158 mongodb的20 0 288564 4848 1320š0.7 0.1 1:03.38的mongod 1158 mongodb的20 0 288564 4848 1320小号0.7 0.1 1:03.40的mongod 1158 mongodb的20 0 288564 4848 1320š1.0 0.1 1:03.43的mongod 1158 mongodb的20 0 288564 4848 1320š0.7 0.1 1:03.45的mongod 1158 mongodb的20 0 288564 4848 1320š1.0 0.1 1:03.48的mongod 1158 mongodb的20 0 288564 4848 1320š0.3 0.1 1:03.49的mongod 1158 mongodb的20 0 288564 4848 1320š1.0 0.1 1:03.52的mongod 1158 mongodb的20 0 288564 4848 1320 S 0.7 0.1 1:03.54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1.0 0.1 1:03.57 mongod
现在,我们将使用 杀戮
命令杀死名为“mongo”的进程。
pkill mongo
此命令现在将终止进程 mongo。我们可以通过使用 pgrep
命令显示 进程号
根据用户指定的标准运行进程。
gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$
此命令将不返回任何值。这证实了进程“mongo”现在使用 杀戮
命令。
经常使用的选项 杀戮
命令
在使用时 杀戮
命令我们将需要提到的选项来正确和轻松地使用 杀戮
命令。
选项 | 描述 |
-F | 匹配完整参数,包括空格、引号、特殊字符 |
-u | 通知 pkill 进程匹配指定用户正在运行的进程 |
-1 | 重新加载进程 |
-9 | 杀死进程 |
-15 | 优雅地中止进程 |
让我们再看一个例子 杀戮
命令使用 -F
选项。
终端上当前正在执行两个命令,如下所示。
ping bbc.com ping youtube.com
这两个过程都是由 平
命令。现在,假设我们只想终止一个进程“ping youtube.com”,那么我们必须使用 -F
选项与 杀戮
命令杀死具有特定名称的进程,包括进程名称中的空格和引号。
命令:
gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$
结果:
gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) 字节数据。来自 bom12s08-in-f14.1e100.net (142.250.67.206) 的 64 字节:icmp_seq=1 ttl=117 time=30.9 ms 来自 bom12s08-in-f14.1e100.net 的 64 字节 (142.250.67.206): icmp_seq=1 ttl=14.1e100.net (1462.22mp) =117 时间 = 121 毫秒 64 字节来自 bom12s08-in-f14.1e100.net (142.250.67.206):icmp_seq=206 ttl=117 时间 = 86.5 毫秒 64 字节来自 bom12s08-in-f14.1e100.net (142.250.67.206) ): icmp_seq=207 ttl=117 time=105 ms 终止 gaurav@ubuntu:~$
在这里,“ping youtube.com
”进程现在被杀死并且“平 bbc.com
”仍在终端上运行。
如果我们使用了 杀平
命令,它会杀死两个 平
过程,这是不可取的。
使用的信号 杀戮
命令
杀戮
通过向该进程发送特定信号来强制该进程退出。三种可能的信号 杀戮
命令可以根据用户给出的命令发送到进程。
以下是可用信号的列表。
信号 | 规格 |
1 (合肥 ) | 重新加载指定的进程 |
9 (杀 ) | 杀死指定的进程 |
15 (学期 ) | 轻轻地停止或中止指定的进程 |
对于本教程,我们将在很大程度上依赖于 杀
信号。让我们通过一些例子来更好地理解它。
使用 pgrep
命令获取 进程号
匹配名称 apache。
gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -Kill apache
或者您也可以使用带有数字的命令(例如 1、9、15)
pkill -9 阿帕奇
上面显示的两个命令都会终止进程 apache。与 pgrep
再次命令。
gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$
作为 pgrep
命令不返回任何输出,证明进程apache已被杀死。
结论
在本教程中,我们了解了 杀戮
命令以及如何使用它直接使用进程名称杀死进程。我们还了解到 pgrep
用于获取任何特定用户运行的进程的进程 ID 的命令。这 pgrep
命令允许我们交叉检查进程是否被终止。