在Linux系统中,终止进程是指终止或停止正在运行的程序的执行。每个正在运行的进程都会分配一个唯一的标识符号,称为进程ID(PID),这有助于系统跟踪当前活动的进程。
在本文中,小编主要介绍Linux终止进程以及如何在Linux系统中使用不同的工具和命令查找和终止进程。
什么是Linux进程
简单来说,进程就像系统上当前运行的程序,每个进程都有自己的特殊ID号。但是,有时正在运行的程序或进程可能会出现异常行为或可能停止响应或使用过多的系统资源。
发生这种情况时,我们就需要停止或“终止”进程,这就是Kill命令所做的工作。。
什么是Kill命令
“Kill”命令是一个重要的实用程序,允许用户向 ,指示它们正常退出或强制终止。当你需要管理和控制Linux系统上不同程序的活动时,Kill命令非常有用,例如:
- 停止任何自动化进程。
- 停止意外启动的进程。
- 停止使用过多内存的进程。
- 强制终止Linux中任何正在运行的进程。
- 停止在后台运行的进程。
使用/usr/bin中的Kill命令提供了一些额外的功能,可以使用pkill按进程名称杀死进程,pkill通过进程名称来识别进程。
如何查找进程名称
终止正在运行的进程之前,必须使用以下ps命令来识别其进程ID(PID),该命令显示以下信息:系统上所有正在运行的进程及其PID(进程ID)和其它信息:
$ ps -ef
如果你想找到一个特定的进程名称PID,你可以使用grep命令,它会列出系统上运行的所有进程,并过滤结果,例如只显示那些包含术语“mariadb”的进程,命令如下:
ps -ef | grep mariadb
或者,可以使用pgrep命令直接按名称查找进程的PID,如下所示:
pgrep mariadb
如何在Linux中终止进程
在终止、停止进程之前,请考虑权限。如果你是root用户,可以停止任何进程,但如果你是普通用户,需要在前面添加“sudo”命令或使用“su”切换到根目录以使用终止命令。Kill命令的常见语法是:
kill [signal or option] PID(s) 或者 sudo kill [signal or option] PID(s)
对于Kill命令,signal名称可以是:
从上面的列表可以清楚地看出:
- SIGTERM是终止进程的默认且最安全的方法。
- SIGHUP是一种比SIGTERM更不安全的终止进程的方法。
- SIGKILL是上述三种方式中最不安全的方式,用于终止进程而不保存进程。
在Linux系统中,可以使用不同的signal名称来停止、结束或暂停进程。可以使用以下命令列出所有可用的终止信号及其名称和相应的编号:
kill -l
虽然有多个可用signal,但大多数情况下我们只使用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 或者 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 或者 pkill mysqld
另外,你始终可以使用以下任何命令来验证进程的状态是否正在运行:
systemctl status mysql pgrep mysql ps -aux | grep mysql
值得一提的是,Linux图形系统监视器工具,如htop或gnome系统监视器,提供了一个用户友好的界面来查找和终止进程。
总结
通过以上介绍可以看出,在Linux系统中,kill
命令用于向进程发送信号,而不仅仅是用于终止进程。信号是一种用于与运行中的进程通信的机制。kill
命令最常用于发送SIGTERM
信号,以请求进程正常退出。但是,kill
命令也可以用于发送其他信号,具体取决于需要执行的操作。
通过使用kill
命令,系统管理员可以与运行中的进程进行交互,请求它们执行不同的操作,例如重新加载配置、重新启动或正常退出。kill
命令的灵活性使其成为管理和控制进程的重要工具。