前言
前面我们学完了文件操作、权限、查找、压缩打包,都是操作“静态文件”。
而进程管理是 Linux 系统动态核心:系统卡、程序卡死、CPU占用高、后台运行、程序退出、开机自启,全部和进程有关。
很多新手只会敲命令,不懂程序与进程区别、父子进程、前台后台、信号杀死原理,遇到程序卡死只能重启服务器。
本篇把进程原理 + 查看命令 + 进程控制 + 前后台调度 + 企业级杀进程规范全部讲透,是 Linux 运维最重要的一章。
一、彻底搞懂:程序 & 进程(核心原理)
1. 程序(静态)
存放在硬盘上的可执行文件、脚本、二进制文件,静静躺着,不占用CPU、不占用内存,属于静态文件。
例如:ls、java、python、自己写的 a.out
2. 进程(动态)
把硬盘上的程序加载到内存、交给CPU运行,产生的动态实例就是进程。
进程特点:
-
占用内存、占用CPU资源
-
每一个进程都有唯一PID(进程号)
-
程序可以多次运行,产生多个不同进程
3. 进程树形结构(父子进程)
-
Linux 所有进程都是树形结构
-
PID=1 是系统第一个进程(祖宗进程)
-
除1号进程外,所有进程都有父进程
-
父进程可以创建、孵化子进程
-
父进程退出,子进程会被1号进程接管
理解父子进程:系统不会凭空出现进程,所有进程都是被“生出来”的。
二、查看进程的四大工具:pstree / ps / top / pidof
1. pstree 树形查看进程关系
专门用来查看父子进程结构,比ps更直观。
常用参数:
-
-p:显示每个进程的 PID 号(最常用)
实操命令:
pstree
pstree -p
适用场景:排查进程嵌套、僵尸进程、父子进程卡死问题。
2. ps 静态查看进程(工作最常用)
ps 是快照式查看:瞬间抓取当前进程状态,不刷新。
常用参数(全部精讲):
-
a:显示所有控制台用户进程
-
u:展示用户名、CPU、内存占用
-
l:长格式,显示详细进程状态、PID、PPID
-
x:显示无终端进程(后台守护进程)
-
r:只显示正在运行(RUNNING)的进程
-
p PID:只查看指定PID的进程
-
-C 命令名:查看某个程序的所有进程
-
-U 用户名:查看某个用户的所有进程
生产最常用组合(必背):
ps aux # 查看系统所有进程(运维标配)
ps efl # 查看父子进程关系详细信息
3. top 动态实时进程监控
top 相当于Linux任务管理器,实时刷新CPU、内存、进程状态。
基础参数:
-
-p PID:只监控指定进程
进入 top 后的交互快捷键(非常重要):
-
q:退出top
-
h / ?:查看帮助
-
M:按内存占用从大到小排序
-
P:按CPU占用从大到小排序(最常用)
-
u 用户名:只看某用户进程
-
k:输入PID,直接杀死进程
-
r:修改进程优先级
适用场景:排查CPU爆满、内存泄漏、程序卡死。
4. pidof 快速获取进程PID
直接根据程序名,查出运行PID,不用复杂过滤。
pidof java
pidof python
三、进程控制:kill 信号精讲(面试+工作重点)
很多新手只会 kill -9,不懂原理,容易丢数据、损坏服务!
1. 查看所有信号
kill -l
2. 三大核心信号(必须吃透)
① kill -15(默认优雅结束)
默认信号,kill PID 等价 kill -15 PID
作用:
-
通知程序正常收尾
-
保存日志、释放资源、关闭连接、退出
缺点:进程卡死、死锁时不生效
② kill -9(强制杀死)
最高权限强制终止,系统级强制销毁进程。
特点:
-
立刻结束,不给任何保存机会
-
卡死进程、僵尸进程只能用 -9
⚠ 禁忌:尽量不要随便对业务程序使用-9,容易损坏文件、丢失数据
③ kill -1(重启进程)
让进程重新加载配置、重启刷新,不杀死进程本体。
3. 企业标准操作流程
先温柔杀,杀不掉再强制杀:
kill PID
kill -9 PID
四、前台进程 & 后台进程(重点难点)
所有运维、脚本、服务部署,全部依赖前后台切换!
1. 前台进程
默认运行方式:占用当前终端,窗口不能关、不能输入新命令,退出终端程序直接结束。
2. 后台进程(守护运行)
不占用终端,关闭窗口也能跑,适合长时间运行程序。
3. 后台运行符号
命令末尾加 & 直接放入后台
python test.py
4. jobs 查看后台任务列表
查看当前终端所有后台暂停/运行任务,展示 job ID
jobs
5. fg 把后台进程切回前台
fg + 任务编号,恢复前台运行
fg 1
6. bg 激活暂停的后台进程
后台进程暂停后,用 bg 继续运行
bg 1
7. 杀死后台任务(按 job ID)
通过 %编号 直接操作后台进程
kill %1
kill -9 %1
五、新手高频坑点(独家总结)
-
坑1:直接乱用 kill -9:会导致文件损坏、日志丢失、数据库异常
-
坑2:后台运行程序直接关窗口:普通 & 进程会被终端挂断终止(进阶需要nohup)
-
坑3:分不清程序和进程:程序是文件,进程是运行实例
-
坑4:不懂父子进程:父进程退出,子进程变成孤儿进程
-
坑5:top 不会排序:不会P/M排序,找不到占用资源的进程
本篇小结
1. 程序静态、进程动态,进程有独立PID、树形父子结构。
2. pstree 看关系、ps 查快照、top 看实时状态、pidof 快速查PID。
3. kill -15 优雅退出、kill -9 强制杀死、kill -1 重载刷新。
4. & 后台运行、jobs 查看、fg/bg 前后台切换、kill %号 操作后台任务。
本篇是 Linux 服务部署、脚本运行、服务器运维的绝对核心。
下期预告
下一篇我们学习 Shell 基础、管道、重定向与简单脚本入门,正式从“敲单条命令”进阶到“自动化运维”。
168

被折叠的 条评论
为什么被折叠?



