教你如何找到正在运行中的进程 ID 并杀死它
Posted LinuxProbe19
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教你如何找到正在运行中的进程 ID 并杀死它相关的知识,希望对你有一定的参考价值。
导读 | 一个简单的教学展示,教你如何找到正在运行中的进程 ID 并杀死它,你可以使用终端或者 GUI,这个方法适用于各类 Linux 发行版。 |
你的 Linux 系统中运行的应用可能会让你的电脑变慢,特别是你的电脑配置较低的时候。在 Linux (以及所有其他 OS)中,程序或者应用都携带一个特别的 PID (进程 ID)可供你简单地分辨它们。
然而,大部分 Linux 初学者用户并不知道如何在 Linux 中寻找运行中的进程并杀死它。在这篇指南中,我们将会解释用不同的方法以杀死 Linux 中的运行进程。这包括了使用终端和 GUI 的方法。
记住,你只应该杀死未响应的进程,或者你发现应用无法被正常关闭 (针对基于 GUI 的应用)。
在这一部分中,我们首先应该先学会如何找到运行进程的 PID,然后再学习用以杀掉它们的命令:
找到正在运行中的进程
你可以使用命令 top 来列出所有正在进行中的进程和它们的 PID,以及其他细节。程序 top 在所有 Linux 发行版和所有基于 Unix 的系统中都是默认安装了的。
同样地,你可以执行命令 ps 附带额外选项来获取某个指定的进程的 PID。例如,你可以使用以下命令来获得 firefox 的 PID。
ps -el | grep -i firefox
现在你已经找到 PID 了,让我们看看你该如何杀掉它。
使用以下命令,你可以通过进程的名字或者 PID 来杀掉这个正在运行中的进程:
- killall:通过运行进程的名字来杀死进程
- kill:通过 PID 来杀死进程
现在,让我们首先使用进程 killall 通过 Firefox 这个名字来杀死它的,命令如下:
killall -9 firefox
- 参数 -9 发送了信号 SIGKILL 通知 OS 来终止这个进程。
- 使用以下命令,你也可以列出一些别的信号。
kill -l
同样地,如果你想要通过 PID 来杀死进程,你可以用以下命令:
kill -9
在这个例子中,命令会长这样:
kill -9 33665
让我们看看在不同发行版中,你该如何使用图形用户界面(GUI)来杀死任意进程或应用。
现在有很多图形界面程序可以枚列进程。大部分 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 桌面可以完成这项任务的原生应用是 任务管理器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 来杀死进程。我希望这对你有所帮助。
如何找到 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 经验的人,您还可以通过Host
、db
、Command
、Time
、State
或 Info
提交查询: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 并杀死它的主要内容,如果未能解决你的问题,请参考以下文章