在 Linux 系统中,进程管理是日常运维和服务器管理中最基础、也是最重要的内容之一。
无论是排查系统负载过高、服务异常,还是分析资源占用情况,都离不开对进程的查看和控制。
本文将系统介绍 Linux 进程的基本概念,并结合常用命令 ps、kill、systemctl、netstat,帮助你快速掌握 Linux 进程管理的核心操作。
一、什么是 Linux 进程
在 Linux 中,每一个正在执行的程序都称为一个进程(Process)。
系统通过 PID(进程 ID) 来区分不同的进程,每个进程都拥有唯一的 PID。
Linux 进程具有以下特点:
-
每个进程都有一个父进程
-
子进程由父进程通过
fork()创建 -
父进程退出后,子进程通常也会终止(特殊情况除外)
-
在 CentOS 7 中,
systemd是所有进程的“祖先进程”(PID 为 1)
二、Linux 进程的创建机制
Linux 使用 fork() 系统调用创建进程:
-
fork()会复制父进程的:-
代码段
-
数据段
-
堆栈
-
进程环境
-
-
子进程拥有独立的 PID
-
父子进程并发执行
这种机制保证了 Linux 系统的稳定性和并发能力。
三、查看系统进程:ps 命令详解
1️⃣ 基本用法
默认显示当前终端下的进程,常见字段包括:
-
PID:进程 ID
-
TTY:终端号
-
TIME:CPU 占用时间
-
CMD:正在执行的命令
2️⃣ 常用参数组合
常见字段说明:
| 字段 | 含义 |
|---|---|
| USER | 进程所属用户 |
| PID | 进程号 |
| %CPU | CPU 占用率 |
| %MEM | 内存占用率 |
| VSZ | 虚拟内存大小(KB) |
| RSS | 实际物理内存大小(KB) |
| TTY | 终端名称 |
| STAT | 进程状态 |
| START | 进程启动时间 |
| TIME | CPU 使用时间 |
3️⃣ 进程状态说明(STAT)
-
R:运行中 -
S:睡眠状态 -
D:不可中断等待 -
T:暂停或被跟踪 -
Z:僵尸进程 -
N:低优先级进程 -
s:会话先导进程
四、终止进程:kill 与 killall
1️⃣ 使用 kill 终止进程(按 PID)
强制终止(不推荐频繁使用):
2️⃣ 使用 killall 终止进程(按名称)
特点:
-
支持通配符
-
适合系统负载过高时快速结束进程
五、服务管理:service 与 systemctl
1️⃣ CentOS 6 及以前(service)
示例:
2️⃣ CentOS 7 及以后(systemctl)
CentOS 7 开始统一使用 systemd 管理服务:
👉 推荐使用 systemctl,service 已逐步淘汰
六、查看网络相关进程:netstat
1️⃣ 查看系统网络状态
2️⃣ 查看端口对应的进程
3️⃣ 结合 grep 精准定位
常见用途:
-
排查端口被占用问题
-
确认服务是否正常监听
-
定位异常网络连接
七、常见问题解答
Q1:僵尸进程(Z)是否危险?
少量僵尸进程问题不大,但大量存在可能是程序缺陷,需要排查父进程。
Q2:kill -9 会有什么风险?
可能导致数据未写入磁盘,建议优先使用普通 kill。
Q3:systemctl 和 kill 有什么区别?
systemctl 是服务级管理,kill 是进程级管理。
八、总结
Linux 进程管理是系统运维的基础能力。通过合理使用 ps 查看进程状态、kill 管理异常进程、systemctl 控制服务,以及 netstat 分析网络连接,可以快速定位并解决大多数服务器问题。
对于新手,建议多结合实际场景练习,逐步建立完整的系统管理思路。
原创文章,作者:admin,如若转载,请注明出处:https://hostingchat.cn/18562.html