Linux 进程管理从入门到高级实战指南
目标:系统学习 Linux 进程管理,从基础命令到高级调优,掌握进程生命周期、调度、监控、优化等核心技能。
📚 课程大纲(分阶段学习)
🔹 第一阶段:Linux 进程管理入门(Day 1-10)
目标:掌握基本概念和常用命令,理解进程的创建、运行和终止。
1. 进程基础概念
知识点 | 说明 |
---|
什么是进程? | 程序在内存中的运行实例 |
进程 vs 线程 | 进程是资源分配单位,线程是 CPU 调度单位 |
进程状态 | R (运行)、S (睡眠)、D (不可中断睡眠)、Z (僵尸)、T (停止) |
2. 进程管理命令
命令 | 作用 | 示例 |
---|
ps | 查看进程 | ps aux (所有进程)
ps -ef (完整格式) |
top / htop | 动态监控进程 | top -p PID (监控特定进程) |
kill | 终止进程 | kill -9 PID (强制终止) |
jobs | 查看后台任务 | jobs -l |
bg / fg | 后台/前台切换 | bg %1 (恢复后台任务)
fg %1 (切换到前台) |
3. 进程创建与终止
fork()
和 exec()
fork()
创建子进程exec()
替换当前进程映像
init
和 systemd
- Linux 的第一个进程是
init
(PID=1) - 现代系统使用
systemd
管理进程
4. 实战练习
🔹 第二阶段:Linux 进程管理进阶(Day 11-30)
目标:深入理解进程调度、资源限制、信号处理等高级特性。
1. 进程调度
概念 | 说明 |
---|
调度策略 | SCHED_NORMAL (默认)、SCHED_FIFO (实时)、SCHED_RR (轮转) |
优先级调整 | nice (-20~19)
renice (修改运行中进程优先级) |
2. 进程间通信(IPC)
方式 | 说明 | 示例 |
---|
管道(Pipe) | ` | ` 连接命令 |
信号(Signal) | 进程间通知 | kill -SIGTERM PID |
共享内存 | shmget + shmat | ipcs -m 查看共享内存 |
消息队列 | msgget + msgsnd | ipcs -q 查看消息队列 |
信号量 | semget + semop | 控制并发访问 |
3. 资源限制
命令 | 作用 | 示例 |
---|
ulimit | 限制进程资源 | ulimit -n 1024 (最大文件描述符) |
cgroups | 高级资源控制 | cgcreate -g cpu:/mygroup |
nice / renice | 调整进程优先级 | nice -n 10 python3 app.py |
4. 信号处理
信号 | 作用 | 示例 |
---|
SIGTERM (15) | 优雅终止 | kill -15 PID |
SIGKILL (9) | 强制终止 | kill -9 PID |
SIGHUP (1) | 终端挂起 | kill -1 PID |
SIGUSR1 / SIGUSR2 | 用户自定义 | kill -SIGUSR1 PID |
5. 实战练习
- 调整进程优先级:
renice -n -5 -p $(pgrep nginx)
- 使用
cgroups
限制 CPU 使用率:cgcreate -g cpu:/mygroup
echo 50000 > /sys/fs/cgroup/cpu/mygroup/cpu.cfs_quota_us
echo $(pgrep nginx) > /sys/fs/cgroup/cpu/mygroup/tasks
- 捕获信号(Python 示例):
import signal
import time
def handle_sigterm(signum, frame):
print("Received SIGTERM, exiting...")
exit(0)
signal.signal(signal.SIGTERM, handle_sigterm)
while True:
time.sleep(1)
🔹 第三阶段:Linux 进程管理高级(Day 31-60)
目标:掌握进程调优、性能分析、分布式任务调度等高级技能。
1. 进程调优
技巧 | 说明 | 示例 |
---|
CPU 绑定 | taskset 绑定 CPU 核心 | taskset -c 0,1 python3 app.py |
NUMA 优化 | 绑定内存节点 | numactl --cpunodebind=0 --membind=0 python3 app.py |
内核参数调优 | sysctl 调整 | sysctl -w vm.swappiness=10 |
2. 性能分析工具
工具 | 作用 | 示例 |
---|
strace | 跟踪系统调用 | strace -p PID |
ltrace | 跟踪库函数调用 | ltrace -p PID |
perf | 性能分析 | perf top |
gdb | 调试进程 | gdb -p PID |
valgrind | 内存泄漏检测 | valgrind --leak-check=full ./app |
3. 分布式任务调度
工具 | 说明 | 示例 |
---|
supervisord | 进程守护 | 配置 supervisord.conf |
systemd | 系统服务管理 | systemctl start nginx |
Kubernetes | 容器编排 | kubectl scale deployment nginx --replicas=3 |
4. 实战练习
- 使用
taskset
绑定 CPU 核心:taskset -c 0,1 python3 cpu_intensive_task.py
- 使用
perf
分析性能瓶颈:perf record -p $(pgrep nginx) -g
perf report
- 使用
supervisord
管理进程:; supervisord.conf
[program:myapp]
command=/usr/bin/python3 /path/to/app.py
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
- 使用
systemd
托管服务:; /etc/systemd/system/myapp.service
[Unit]
Description=My Application
[Service]
ExecStart=/usr/bin/python3 /path/to/app.py
Restart=always
User=www-data
[Install]
WantedBy=multi-user.target
然后运行:systemctl daemon-reload
systemctl enable myapp
systemctl start myapp
📚 学习资源推荐
-
书籍
- 《Linux 多线程服务端编程》(陈硕)
- 《深入理解 Linux 内核》(Daniel P. Bovet)
- 《The Linux Programming Interface》(Michael Kerrisk)
-
在线课程
- Coursera《Linux System Administration》
- Udemy《Linux Performance Optimization》
-
工具文档
man ps
/ man top
/ man kill
perf
官方文档systemd
官方文档
🎯 进阶建议
- 结合实际项目:在 Web 服务器(Nginx)、数据库(MySQL)等场景下实践进程管理。
- 性能调优:使用
perf
、strace
分析系统瓶颈。 - 分布式系统:学习 Kubernetes、Docker 等容器编排工具。
按照此计划,60 天后你将掌握 Linux 进程管理的核心技能,并能优化生产环境中的进程性能! 🚀