如何在 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 ”或使用“ su ”切换到 root 才能使用终止命令。
kill 命令的常见语法是:
kill [signal or option] PID(s) OR sudo kill [signal or option] PID(s)
对于kill 命令,信号名称可以是:
从上面的行为可以清楚看出:
- SIGTERM是终止进程的默认且最安全的方法。
- 与SIGTERM相比, SIGHUP是一种不太安全的终止进程的方式。
- SIGKILL是以上三种方式中最不安全的一种,它会终止一个进程而不保存任何信息。
在 Linux 中,您可以使用不同的信号来停止、结束或暂停进程。您可以使用以下命令列出所有可用的终止信号及其名称和相应的编号,该命令将列出
kill -l
虽然有多个可用信号,但大多数情况下我们只使用SIGKILL (9)和SIGTERM (15)。
要终止进程,我们需要知道进程的进程 ID。进程是程序的一个实例。每次程序启动时,都会自动为该进程生成一个唯一的PID 。
Linux中的每个进程 都有一个pid 。Linux系统启动时启动的第一个进程是 – init 进程,因此在大多数情况下它被分配一个值 ' 1 '。
Init是主进程,无法通过这种方式终止,这确保了主进程不会被意外终止。Init会决定并允许自己被终止,而 kill 仅仅是一个关机请求。
在我们继续执行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)提供了用户友好的界面来查找和终止进程。
结论
我现在就讲到这里。我很快会带着另一个有趣且信息丰富的主题回来。在此之前,请继续关注并关注 Example,并注意您的健康。别忘了在评论部分分享您的宝贵反馈。