如何使用 Kill、Pkill 和 Killall 终止 Linux 进程
在Linux中,终止进程是指终止或停止正在运行的程序的执行。每个正在运行的进程都会分配一个唯一的标识符号,称为进程 ID (PID),这有助于系统跟踪当前活动的进程。
在本文中,我们将了解 Linux 终止进程以及如何在 Linux 中使用不同的工具和命令查找和终止进程。
什么是Linux进程
简单来说,进程就像系统上当前运行的程序,每个进程都有自己的特殊 ID (PID) 号。但是,有时正在运行的程序或进程可能会出现异常行为或可能停止响应或占用过多的系统资源。
当发生这种情况时,我们需要停止或“杀死”该进程,这就是kill命令派上用场的地方。
什么是kill命令
“kill”命令是一个重要的实用程序,它允许用户向当前正在运行的进程发送信号(停止或终止),指示它们正常退出或强制终止。
当您需要管理和控制 Linux 系统上不同程序的活动时,kill 命令非常有用,例如:
- 停止任何自动化进程。
- 停止意外启动的进程。
- 停止使用过多内存的进程。
- 强制终止 Linux 中任何正在运行的进程。
- 停止在后台运行的进程。
使用 /usr/bin 中的 kill 命令为您提供了一些额外的功能,可以使用 pkill 按进程名称杀死进程,它通过以下方式识别进程:他们的名字。
如何查找进程 ID 或进程名称
在终止正在运行的进程之前,必须使用以下 ps 命令来识别其进程 ID (PID) 或名称,该命令显示有关系统上所有正在运行的进程的信息及其 PID(进程 ID)和其他信息。
ps -ef
如果您想查找特定的进程名称 PID,您可以使用 grep 命令,该命令将列出系统上运行的所有进程并过滤结果以仅显示那些包含术语“mariadb “。
ps -ef | grep mariadb
或者,您可以使用 pgrep 命令直接按名称查找进程的 PID,如下所示。
pgrep mariadb
如何在 Linux 中终止进程
在终止、停止或终止进程之前,请考虑权限。如果你是root用户,你可以停止任何进程,但如果你是普通用户,你需要在命令前添加“sudo”或使用“切换到root” su”来使用终止命令。
kill 命令的常见语法是:
kill [signal or option] PID(s)
OR
sudo kill [signal or option] PID(s)
对于kill命令,信号名称可以是:
从上面的行为可以清楚地看出:
- SIGTERM 是终止进程的默认且最安全的方法。
- SIGHUP 是一种比 SIGTERM 更不安全的终止进程的方法。
- SIGKILL是以上三种方式中最不安全的方式,杀死进程即终止进程而不保存。
在 Linux 中,您可以使用不同的信号来停止、结束或暂停进程。您可以使用以下命令列出所有可用的终止信号及其名称和相应的编号,该命令将列出
kill -l
虽然有多种可用信号,但大多数情况下我们只使用SIGKILL(9)和SIGTERM(15)。
要杀死一个进程,我们需要知道进程的进程ID。 进程是程序的一个实例。每次程序启动时,都会自动为该进程生成唯一的PID。
Linux 中的每个进程都有一个 pid。 Linux系统启动时启动的第一个进程是-init进程,因此在大多数情况下它的值是“1”。
Init是master进程,不能通过这种方式被杀死,这样可以保证master进程不会被意外杀死。 Init 决定并允许自己被终止,其中终止只是一个关闭请求。
在我们继续执行 kill 命令之前,需要注意一些重要事项:
- 用户可以杀死他的所有进程。
- 用户不能杀死另一个用户的进程。
- 用户无法终止系统正在使用的进程。
- root用户可以杀死系统级进程和任何用户的进程。
要终止 mariadb 进程 PID,请使用如下所示的 Kill 命令。
kill -9 3383
上述命令将终止具有 pid=3383 的进程,其中 PID 是该进程的数值。
执行相同功能的另一种方法可以重写为:
kill -SIGTERM 3383
类似地,“kill -9 PID”与“kill -SIGKILL PID”类似,反之亦然。
要确认进程已终止,您可以再次使用ps 命令。
ps -ef | grep mariadb
如何在 Linux 中杀死多个进程
要使用进程 ID (PID) 终止 Linux 中的多个进程,可以将 kill 命令与相关 PID 数字结合使用。
首先,使用 ps 或 pgrep 命令确定要终止的进程的 PID。
ps aux | grep apache2
OR
pgrep apache2
获得 PID 后,请使用 kill 命令终止它们。
kill -9 PID1 PID2 PID3
如何使用进程名称杀死 Linux 中的进程
要使用进程名称终止进程,我们将使用 pkill 命令,它是 kill 命令的一个版本,允许您提及进程名称或模式定位一个进程。
在杀死之前,您必须知道进程名称,输入错误的进程名称可能会毁了您。
pkill mysqld
如果一个进程有太多实例和多个子进程怎么办,我们有一个命令“killall”,它将进程名称作为参数来代替进程号。
如何使用 Killall 命令终止 Linux 中的进程
Killall 和kill 之间的主要区别在于killall 可以通过进程名称来结束进程,而kill 命令则依赖于进程ID (pid)。
要终止所有 mysql 实例以及子进程,请使用以下命令。
killall mysqld
OR
pkill mysqld
您始终可以使用以下任何命令来验证进程的状态是否正在运行。
systemctl status mysql
pgrep mysql
ps -aux | grep mysql
Linux 图形系统监控工具(如 htop 或 gnome-system-monitor)提供了一个用户友好的界面来查找和终止进程。
结论
我现在就这样。我很快就会带着另一个有趣且信息丰富的话题回来。在那之前,请继续关注并连接到 Howtoing,并照顾好您的健康。不要忘记在评论部分分享您的宝贵反馈。