Linux 结束进程
前面小节介绍了如何启动一个程序进程,还介绍了如何查看系统进程信息,本小节来介绍如何通过 kill
命令结束进程。
1. Linux 进程信号介绍
信号 |
名称 |
描述 |
1 |
HUP |
挂起 |
2 |
INT |
中断 |
3 |
QUIT |
结束运行 |
9 |
KILL |
无条件终止 |
11 |
SEGV |
段错误 |
15 |
TERM |
尽可能终止 |
17 |
STOP |
无条件停止运行,但不终止 |
18 |
TSTP |
停止或暂停,但继续在后台运行 |
19 |
CONT |
在 STOP 或 TSTP 之后恢复执行 |
2. 查看进程的 PID
这里还是以之前启动的 nginx
进程为例,使用 ps
查看 nginx
命令如下:
Tips:如图所示,可以看到有三条 nginx
相关信息信息,其中 PID 为 12512
这一列表示的是当前打开窗口的进程,12471
和 12472
这两个 PID 无法直接判断是否是之前启动 nginx
服务的 PID,下面可以使用端口号去确认进程 PID。
3. 端口号概念
所谓的端口,就好像是门牌号一样,客户端可以通过 ip 地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号 。
4. 通过进程 PID 查找端口号
nginx
软件服务启动之后默认的端口号是 80
,可以使用如下命通过 PID
查找到端口号,命令如下:
netstat -apn | grep 12471
Tips:如图所示,可以知道进程 PID = 12471
这个进程符合 nginx
启动的端口号。
4. kill 结束进程
前面查找到进程的 PID
之后,可以使用 kill
命令杀死进程,命令如下:
kill -9 12471
ps -ef | grep nginx
Tips:从图中可以看到,使用 kill -9
命令之后,可以杀掉 PID = 12471
这个进程,12472
属于 12471
的子进程,所以也会被一起杀掉,从前面的表中可以看到 -9
表示无条件终止。
5. killall 结束进程
killall
命令可以直接通过进程相关的名称来结束进程,先启动 nginx
服务之后,然后使用 killall
杀掉 nginx
相关的进程,命令如下:
service nginx start
ps -ef | grep nginx
killall nginx
ps -ef | grep nginx
Tips:实际业务中 killall
使用时需要谨慎,防止 root
权限误操作误杀其他进程。
6. 小结
本小节介绍了进程通信信号描述,介绍了如何使用 ps
命令查看进程的 PID
,还介绍了如何使用 kill
和 killall
结束进程,其中 kill
是通过进程的 PID
来结束掉进程的,killall
可以通过进程名称来结束掉进程,另外还介绍了如何使用 PID
去查找该应用程序占用的端口号。