22. 【Linux教程】Linux 结束进程

前面小节介绍了如何启动一个程序进程,还介绍了如何查看系统进程信息,本小节来介绍如何通过 kill 命令结束进程。

1. Linux 进程信号介绍

下面列举出 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 命令如下:

复制代码
ps -ef | grep nginx

执行结果如下图:

Tips :如图所示,可以看到有三条 nginx 相关信息信息,其中 PID 为 12512 这一列表示的是当前打开窗口的进程,1247112472 这两个 PID 无法直接判断是否是之前启动 nginx 服务的 PID,下面可以使用端口号去确认进程 PID。

3. 端口号概念

所谓的端口,就好像是门牌号一样,客户端可以通过 ip 地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号 。

4. 通过进程 PID 查找端口号

nginx 软件服务启动之后默认的端口号是 80,可以使用如下命通过 PID 查找到端口号,命令如下:

复制代码
netstat -apn | grep 12471

执行结果如下:

Tips :如图所示,可以知道进程 PID = 12471 这个进程符合 nginx 启动的端口号。

5. kill 结束进程

前面查找到进程的 PID 之后,可以使用 kill 命令杀死进程,命令如下:

复制代码
kill -9 12471

ps -ef | grep nginx

执行结果如下图:

Tips:从图中可以看到,使用 kill -9 命令之后,可以杀掉 PID = 12471 这个进程,12472 属于 12471 的子进程,所以也会被一起杀掉,从前面的表中可以看到 -9 表示无条件终止。

6. killall 结束进程

killall 命令可以直接通过进程相关的名称来结束进程,先启动 nginx 服务之后,然后使用 killall 杀掉 nginx 相关的进程,命令如下:

复制代码
service nginx start

ps -ef | grep nginx

killall nginx

ps -ef | grep nginx

执行结果如下图:

Tips :实际业务中 killall 使用时需要谨慎,防止 root 权限误操作误杀其他进程。

7. 小结

本小节介绍了进程通信信号描述,介绍了如何使用 ps 命令查看进程的 PID,还介绍了如何使用 killkillall 结束进程,其中 kill 是通过进程的 PID 来结束掉进程的,killall 可以通过进程名称来结束掉进程,另外还介绍了如何使用 PID 去查找该应用程序占用的端口号。

相关推荐
鸽芷咕2 小时前
DrissionPage 成 CANN 仓库爆款自动化工具:背后原因何在?
运维·python·自动化·cann
池央2 小时前
CANN 算子生态的深度演进:稀疏计算支持与 PyPTO 范式的抽象层级
运维·人工智能·信号处理
Maynor9962 小时前
OpenClaw 玩家必备:用 AI 自动追踪社区最新动态
java·服务器·人工智能
郝学胜-神的一滴2 小时前
深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅
linux·服务器·c语言·网络·网络协议·tcp/ip
OJAC1112 小时前
当所有人都在说“运维稳了”,近屿智能看到了另一种可能
运维
“αβ”2 小时前
数据链路层协议 -- 以太网协议与ARP协议
服务器·网络·网络协议·以太网·数据链路层·arp·mac地址
释怀不想释怀2 小时前
Linux网络基础(ip,域名)
linux·网络·tcp/ip
初願致夕霞2 小时前
Linux_进程
linux·c++
人鱼传说2 小时前
docker desktop是一个好东西
运维·docker·容器
开开心心就好2 小时前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender