如何从 Linux 终端终止进程如何从 Linux 终端终止进程如何从 Linux 终端终止进程如何从 Linux 终端终止进程
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何从 Linux 终端终止进程

杀死进程有时是摆脱它的唯一方法。尽管名字很刺耳,“杀死”一个进程只是意味着“强迫它退出”。以下是从 Linux 或 macOS 命令行执行此操作的方法。

什么是流程?

运行程序,如您的 Web 浏览器、与您的桌面环境相关的后台进程以及 Linux 系统服务都是进程。

您可以将流程分为两组:

  • 前台进程 是由用户启动或启动的进程。它们可能位于终端窗口中,也可能是图形应用程序。
  • 后台进程是所有自动启动的进程,不与用户进行任何交互。他们不期望用户输入,也不向他们展示结果或输出。后台进程类似于服务和守护进程。

如果说前台流程是前台的剧院工作人员和演员,那么后台流程就是后台“幕后”团队。

当进程行为不当或出现故障时,它们可能会占用过多的 CPU 时间、消耗您的 RAM,或者进入紧密的计算循环并变得无响应。图形应用程序可以拒绝响应鼠标点击。终端应用程序可能永远不会将您返回到命令提示符。

人道的答案

“杀死”进程只是意味着“强制进程退出”。如果进程拒绝响应,这可能是必要的。

Linux 提供了 kill、pkill 和 killall 命令来让您做到这一点。这些命令可用于任何类型的进程、图形或命令行、前台或后台。

杀戮命令

要使用 kill,您必须知道要终止的进程的进程 ID (PID)。 ps 命令可用于查找进程的 PID。

要让 ps 搜索所有进程,请使用 -e(所有进程)选项。通过 less 管道输出是可取的,会有相当多的。输入 ps,一个空格,-e,一个空格,|(竖线字符),另一个空格,然后输入 less。按 Enter 键执行命令。

ps -e | less

这将为您提供类似于以下屏幕截图的流程列表。您可以使用 / 键在 less 中向前搜索,也可以使用 ? 键向后搜索。

要了解您感兴趣的进程,请将 ps 的输出通过 grep 进行管道传输,并指定进程的名称(或名称的一部分)。

ps -e | grep shutter

找到要终止的进程的 PID 后,将其作为参数传递给 kill 命令。要终止由上一个命令标识的 shutter 进程,请使用以下命令:

kill 2099

kill 命令是一个无声的刺客——如果它成功了,它不会给你任何反馈。

它在 macOS 上的终止进程也同样有效。

pkill 命令

pkill 命令允许您按名称终止一个或多个进程。您不需要通过 PID 来标识进程。要使用 pkill,您需要提供一个搜索词,pkill 会使用它来检查正在运行的进程列表。匹配过程终止。所以你需要确定你的搜索词拼写正确。

作为安全网,您可以在使用 pkill 命令之前 使用 pgrep 命令。 pgrep 命令也接受搜索词。它将列出与搜索词匹配的每个进程的 PID。这是安全的,因为 pgrep 不会向进程发出任何终止信号,如果您输入了错误的搜索词,您也不会错误地终止另一个进程。在将搜索词传递给 pkill 之前,您可以确保正确考虑了搜索词。 pkill 和 pgrep 都以相同的方式处理搜索词。它们的处理方式非常相似,以至于它们共享相同的手册页。

假设有一个名称中包含“subq”的进程。我们将使用 ps -u dave | grep 命令来查看幕后情况。你可以看到“subq”将匹配那个进程并且只匹配那个进程。那只是为了让您可以看到流程的全名。

ps -u dave | grep subq

假设我们的用户没有这样做;他们只知道进程名称包含子字符串“subq”。他们使用 pgrep 检查搜索项是否只有一个匹配项。然后他们将该搜索词与 pkill 一起使用。

pgrep subq
pkill subq

您可以使用 pkill 一次终止多个进程。在这里,用户运行 pgrep 来检查 Chrome 启动了多少个进程。他们使用 pkill 来杀死他们。然后他们使用 pgrep 检查它们是否已全部删除。

pgrep chrome
pkill chrome
pgrep chrome

如果多个同名进程正在运行,但您不想将它们全部杀死,则可以使用带有 -f(命令行)选项的 pgrep 来识别哪个进程过程是哪个。一个简单的示例是两个 ping 进程。您想杀死其中一个,但不想杀死另一个。您可以使用它们的命令行来区分它们。请注意使用引号将命令行参数括起来。

pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"

killall 命令

警告:在 Solaris 和 OpenIndiana 操作系统中,killall 命令将杀死属于您的所有进程。如果是 root 用户或者您已发出 sudo killall,您将重新启动计算机!在本文的研究过程中,最新版本的 OpenIndiana Hipster 2018.10 证实了这种行为。

killall 命令的操作方式与 pkill 命令类似,但有一个特定的区别。您必须提供准确的进程名称,而不是将搜索词传递给命令。

您不能提供与流程名称的部分匹配;您必须提供完整的进程名称,如下所示:

killall shutt
killall shutter

-y(小于)选项允许您终止运行时间小于指定时间段的进程。期间以数字形式给出,后跟以下单位之一:

  • s(秒)
  • 米(分钟)
  • h(小时)
  • d(天)
  • w(周)
  • M(月份,注释,大写“M”)
  • y(年)

要终止刚刚启动的名为 ana 的进程并让任何较旧的 ana 实例继续运行,您可以将以下参数与 killall 一起使用,如果你在两分钟内做出反应:

killall -y 2m ana

-o(早于)选项允许您终止运行时间超过指定时间的进程。此命令将终止所有运行时间超过一天的 ssh 连接:

killall -o 1d sshd

不要太激动

这些命令将使您能够准确、安全地识别和终止错误进程。

始终保持谨慎。首先,确保您要杀死的进程确实是您想要的进程。其次,仔细检查——小心并确保目标进程是你想要结束的进程。满意后继续终止该过程。

Linux Commands
Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc
Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts

©2015-2025 艾丽卡 support@alaica.com