本项目旨在系统、完整地学习Linux操作系统,内容涵盖基础命令、Shell编程、系统编程、网络编程等模块,适合对Linux有初步了解的学习者。
章节 | 完成度 | 状态 | 备注 |
---|---|---|---|
Linux基础 | 75% | 🔄 进行中 | 基础环境已完成,C编译工具部分完成 |
基础命令及Shell | 33% | 🔄 进行中 | 常用命令已完成,Shell脚本进行中 |
系统编程 | 95% | 🔄 进行中 | 基本完成等待进一步优化 |
网络编程 | 95% | 🔄 进行中 | 基本完成等待进一步优化 |
服务器开发 | 0% | ⏳ 未开始 | 待开始 |
嵌入式开发 | 0% | ⏳ 未开始 | 待开始 |
安全与性能调优 | 0% | ⏳ 未开始 | 待开始 |
-
Linux 基础环境
- 发行版与使用场景:Ubuntu、CentOS、Debian 等
- 文件系统结构:
/etc
,/var
,/usr
,/proc
,/sys
,/dev
,/home
- 文本编辑器:Vim / Emacs / Nano
-
C 编译构建调试工具
- 编译与链接过程:
gcc
- makefile文档编写: makefile cmake
- 调试与分析工具:
gdb
,strace
,lsof
,perf
- 编译与链接过程:
-
常用命令详解
- 文件操作:
ls
,cp
,mv
,rm
,find
,tree
,cat
- 用户、组、权限管理:
useradd
,groupadd
,chmod
,chown
, sudo 配置 - 进程管理:
ps
,top
,htop
,kill
,jobs
,bg
,fg
- 网络命令:
ping
,ss
,netstat
,curl
,wget
- 包管理:
apt
,yum
,dnf
,rpm
,dpkg
- 管道与重定向:
|
,>
,>>
,<
,2>&1
- 文件操作:
-
Shell 脚本
- 基础:变量、条件判断、循环、函数
- 进阶:数组、正则匹配、环境变量
- 调试:
set -x
,set -e
- 定时任务:
crontab
,at
-
Shell 常用工具
- 文本处理:
awk
,sed
,grep
,cut
,sort
,uniq
- 日志分析:结合
grep
/awk
- 批量操作:
xargs
,parallel
- 文本处理:
-
实战案例与练习
- 日志自动归档:按日期切割、压缩
- 性能监控脚本:CPU/内存/磁盘报警
- 自动化部署:批量拉取代码、编译、发布
-
Linux 系统调用基础
- 概念:用户态与内核态切换
- 常用接口:
syscall
封装
-
文件 I/O 与进程控制
- 打开、读写与定位:
open
,read
,write
,lseek
,close
- 进程相关概念: 进程的定义、进程的状态及转换、进程控制块
- 进程创建与执行:
fork
,vfork
,execve
,waitpid
,exit
- 打开、读写与定位:
-
进程间通信(IPC)
- 管道
pipe
/ 有名管道 FIFO - 共享内存
shmget
,shmat
,shmdt
- 消息队列
msgget
,msgsnd
,msgrcv
- 信号量
semget
,semop
- 管道
-
线程与多线程编程
pthread_create
,pthread_join
- 同步:互斥锁
pthread_mutex
、条件变量pthread_cond
- 线程局部存储(TLS)
-
信号、定时器与事件处理
- 信号处理:
signal
,sigaction
- 定时器:
alarm
,setitimer
, POSIX 定时器timer_create
- 事件驱动:
signalfd
,eventfd
- 信号处理:
-
内存管理
- 动态分配:
malloc
,calloc
,realloc
,free
- 内存映射:
mmap
,munmap
- 虚拟内存与
/proc/<pid>/maps
- 动态分配:
-
网络基础知识
- OSI/TCP/IP 模型
- IP 地址、子网掩码、路由
- DNS、ARP、MAC 地址
-
Socket 编程
- 套接字创建与关闭:
socket
,bind
,listen
,accept
,connect
,close
- 数据收发:
send
,recv
,sendto
,recvfrom
- 套接字创建与关闭:
-
TCP/UDP 协议与应用
- TCP 特性:流式、可靠性、拥塞控制
- UDP 特性:无连接、报文传输
- 应用示例:简易 HTTP 客户端/服务器、DNS 查询工具
-
多路复用与高性能编程
select
,poll
,epoll
使用方法与对比- 非阻塞 I/O 与边沿/水平触发
- Reactor 模型与线程池结合
-
网络安全与加密基础
- SSL/TLS 基础:OpenSSL 使用
- 简单加密:对称加密(AES)、非对称加密(RSA)
- 身份验证:证书与密钥管理
-
高性能网络服务
- Reactor 模型:
epoll
+ 线程池 - 异步框架:muduo 等
- Reactor 模型:
-
并发与资源管理
- 线程池、连接池
- 内存池、日志系统
-
存储与持久化
- SQLite / MySQL / Redis 接入
- 日志文件与滚动策略
-
部署与维护
- systemd 单元文件
- CI/CD:Jenkins / GitLab CI
-
交叉编译与环境搭建
- 工具链:
arm-linux-gnueabihf-gcc
等 - 构建系统:Buildroot / Yocto
- 工具链:
-
嵌入式系统架构
- 启动流程:Bootloader → Kernel → RootFS → Init
- 常用组件:BusyBox、systemd(或 init)
-
驱动开发与设备树
- 字符设备驱动、Platform 驱动
- 设备树(Device Tree) 基础
- 用户空间通信:ioctl、sysfs、procfs
-
外设接口与调试
- UART、SPI、I2C、GPIO 调试
- 串口工具、逻辑分析仪
-
系统安全
- 防火墙配置:iptables、firewalld
- 安全审计:auditd、SELinux/AppArmor
- 漏洞扫描与修复
-
性能调优
- 系统监控:sar、vmstat、iostat
- 内核参数调优:sysctl
- 应用性能分析:perf、ftrace
-
书籍
- 《UNIX 环境高级编程》
- 《Linux 多线程服务端编程(muduo)》
- 《嵌入式 Linux 开发实战》
- 《深入理解 Linux 内核》
-
在线资源
- Linux 源码:https://github.com/torvalds/linux
- LearnLinux:https://linuxjourney.com/
- OverTheWire:https://overthewire.org/
欢迎大家一起学习、交流与完善本项目!