教你如何找到正在运行中的进程 ID 并杀死它

Posted LinuxProbe19

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教你如何找到正在运行中的进程 ID 并杀死它相关的知识,希望对你有一定的参考价值。

导读 一个简单的教学展示,教你如何找到正在运行中的进程 ID 并杀死它,你可以使用终端或者 GUI,这个方法适用于各类 Linux 发行版。

你的 Linux 系统中运行的应用可能会让你的电脑变慢,特别是你的电脑配置较低的时候。在 Linux (以及所有其他 OS)中,程序或者应用都携带一个特别的 PID (进程 ID)可供你简单地分辨它们。

然而,大部分 Linux 初学者用户并不知道如何在 Linux 中寻找运行中的进程并杀死它。在这篇指南中,我们将会解释用不同的方法以杀死 Linux 中的运行进程。这包括了使用终端和 GUI 的方法。

记住,你只应该杀死未响应的进程,或者你发现应用无法被正常关闭 (针对基于 GUI 的应用)。

如何在 Linux 中找到 PID 并杀掉它们

在这一部分中,我们首先应该先学会如何找到运行进程的 PID,然后再学习用以杀掉它们的命令

找到正在运行中的进程
你可以使用命令 top 来列出所有正在进行中的进程和它们的 PID,以及其他细节。程序 top 在所有 Linux 发行版和所有基于 Unix 的系统中都是默认安装了的。

top


同样地,你可以执行命令 ps 附带额外选项来获取某个指定的进程的 PID。例如,你可以使用以下命令来获得 firefox 的 PID。

ps -el | grep -i firefox


现在你已经找到 PID 了,让我们看看你该如何杀掉它。

杀死运行中的进程

使用以下命令,你可以通过进程的名字或者 PID 来杀掉这个正在运行中的进程:

  1. killall:通过运行进程的名字来杀死进程
  2. kill:通过 PID 来杀死进程

现在,让我们首先使用进程 killall 通过 Firefox 这个名字来杀死它的,命令如下:

killall -9 firefox
  1. 参数 -9 发送了信号 SIGKILL 通知 OS 来终止这个进程。
  2. 使用以下命令,你也可以列出一些别的信号。
kill -l

同样地,如果你想要通过 PID 来杀死进程,你可以用以下命令:

kill -9 

在这个例子中,命令会长这样:

kill -9 33665

让我们看看在不同发行版中,你该如何使用图形用户界面(GUI)来杀死任意进程或应用。

通过 GUI 寻找 PID 并杀掉

现在有很多图形界面程序可以枚列进程。大部分 Linux 发行版的桌面环境中已经携带了它们。我们在这里列举出了一些。

GNOME(在 Ubuntu、Fedora 工作站等) & 在 Linux Mint 中
在应用菜单中搜索 “system monitor” 并打开它(LCTT 译注:中文桌面环境也可以搜 “system monitor”,我在 Ubuntu 里试过了)。在 “进程Processes” 标签页下找到你的进程,右击进程名字打开快捷菜单,选择选项 “杀死Kill”。

KDE Plasma(Kubuntu、Fedora-KDE 或任何基于 Plasma 的发行版)
在应用菜单中搜索并启动 “system monitor”。这会打开以下程序。在左边菜单栏点击“进程Processes” ,你因该能看见一列正在运行的程序。你可以右击列表里的进程或应用并选择“杀死Kill”来终止进程。

Xfce 桌面

Xfce 桌面可以完成这项任务的原生应用是 任务管理器Task Manager,你可以通过 “应用Application > 系统System > 任务管理器Task manager” 来找到它。右击进程名字然后选择“杀死Kill”来终止应用或进程。

如何在其他桌面或发行版上杀死一个进程或程序
如果你找不到任何相似的程序,你可以选择使用终端的方法。或者,你可以使用以下命令来安装 gnome-system-monitor。

Ubuntu 以及相关发行版:

sudo apt install gnome-system-monitor

Fedora 以及其相关的发行版:

sudo dnf install gnome-system-monitor

还有 Arch Linux:

sudo pacman -S gnome-system-monitor
总结一下

这就是你该如何在 Linux 中找到一个运行中的进程的 PID 并杀死它。我们已经解释了不同的方法:你可以通过名字或者 PID 来杀死进程。我希望这对你有所帮助。

本文地址:https://www.linuxprobe.com/teach-you-how.html

如何找到 MySQL 进程列表并杀死这些进程?

【中文标题】如何找到 MySQL 进程列表并杀死这些进程?【英文标题】:How to find MySQL process list and to kill those processes? 【发布时间】:2017-10-26 19:22:20 【问题描述】:

由于某些查询,MySQL 数据库挂起。

我怎样才能找到进程并杀死它们?

【问题讨论】:

【参考方案1】:

解决办法如下:

    登录数据库; 运行命令show full processlist;以获取进程ID和状态并查询导致数据库挂起的自身; 选择进程 ID 并运行命令 KILL <pid>; 以终止该进程。

有时手动杀死每个进程是不够的。因此,为此我们必须使用一些技巧:

    登录 MySQL; 运行查询Select concat('KILL ',id,';') from information_schema.processlist where user='user'; 以使用KILL 命令打印所有进程; 复制查询结果,粘贴并删除管道| 符号,再次复制并粘贴到查询控制台中。 按回车键。 Boom 完成了

【讨论】:

这个查询很棒!对于任何有少量 MySQL 经验的人,您还可以通过 HostdbCommandTimeStateInfo 提交查询:SELECT concat('KILL ',id,';') from information_schema.processlist where Command='Sleep';SELECT concat('KILL ',id,';') from information_schema.processlist where Time>'300';跨度> 感谢您的询问!我使用了一个可以节省一些手动编辑时间的增强版本:select group_concat(concat('KILL ',id,';') separator ' '),所以它们都放在可以复制粘贴的一行 查询没问题,但你最终可能会杀死自己的进程。在重新运行“全部杀死”之前,我会查看进程 ID 列表。 调整@architectonic 的评论,让我立即更容易处理剪贴板(即使有讨厌的打开和关闭双引号)SELECT group_concat(concat('KILL ',id,';') SEPARATOR ' \n') AS KILL_EVERYTHING FROM information_schema.processlist;【参考方案2】:
select GROUP_CONCAT(stat SEPARATOR ' ') from (select concat('KILL ',id,';') as stat from information_schema.processlist) as stats;

然后将结果复制并粘贴回终端。 比如:

KILL 2871; KILL 2879; KILL 2874; KILL 2872; KILL 2866;

【讨论】:

【参考方案3】:

您可以执行以下操作来检查是否有任何mysql 进程正在运行:

ps aux | grep mysqld
ps aux | grep mysql

如果它正在运行,你可以使用killall(取决于当前所有进程正在运行):

killall -9 mysql
killall -9 mysqld
killall -9 mysqld_safe    

【讨论】:

OP 正在询问 MySQL 服务器中运行的进程。 虽然不是所要求的,但它有所帮助,因为这是 google 在搜索如何杀死 linux 上的所有 mysqld 进程时返回的第一项;)【参考方案4】:

对于 MYSQL 8.xx 你可以只使用 mysqladmin 关闭。不确定这是否适用于旧版本。

root 密码为 SomePass 的示例

mysqladmin -u root -pSomePass shutdown

您还应该在 /var/log/mysql/error.log 中看到关闭

【讨论】:

以上是关于教你如何找到正在运行中的进程 ID 并杀死它的主要内容,如果未能解决你的问题,请参考以下文章

如何找到并杀掉 Linux 系统中的僵尸进程

如何杀死并重新运行qt中的主进程?

找到并杀死一个软件开启的进程

如何使用 php 中的 pid 杀死 linux 进程?

如何杀死正在运行的python进程? [复制]

找到正在运行的python进程的当前行号