​Linux 进程管理从入门到高级实战指南

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() 替换当前进程映像
  • initsystemd
    • Linux 的第一个进程是 init(PID=1)
    • 现代系统使用 systemd 管理进程
4. 实战练习
  • 查看所有 Java 进程:
    ps aux | grep java
    
  • 终止某个进程:
    kill -9 $(pgrep nginx)
    
  • 后台运行程序:
    nohup python3 app.py > output.log 2>&1 &
    

🔹 第二阶段:Linux 进程管理进阶(Day 11-30)

目标:深入理解进程调度、资源限制、信号处理等高级特性。

1. 进程调度
概念说明
调度策略SCHED_NORMAL(默认)、SCHED_FIFO(实时)、SCHED_RR(轮转)
优先级调整nice(-20~19)
renice(修改运行中进程优先级)
2. 进程间通信(IPC)
方式说明示例
管道(Pipe)`` 连接命令
信号(Signal)进程间通知kill -SIGTERM PID
共享内存shmget + shmatipcs -m 查看共享内存
消息队列msgget + msgsndipcs -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
    

📚 学习资源推荐

  1. 书籍

    • 《Linux 多线程服务端编程》(陈硕)
    • 《深入理解 Linux 内核》(Daniel P. Bovet)
    • 《The Linux Programming Interface》(Michael Kerrisk)
  2. 在线课程

    • Coursera《Linux System Administration》
    • Udemy《Linux Performance Optimization》
  3. 工具文档

    • man ps / man top / man kill
    • perf 官方文档
    • systemd 官方文档

🎯 进阶建议

  1. 结合实际项目:在 Web 服务器(Nginx)、数据库(MySQL)等场景下实践进程管理。
  2. 性能调优:使用 perfstrace 分析系统瓶颈。
  3. 分布式系统:学习 Kubernetes、Docker 等容器编排工具。

按照此计划,60 天后你将掌握 Linux 进程管理的核心技能,并能优化生产环境中的进程性能! 🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩公子的Linux大集市

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值