1. Linux系统概述与学习价值
Linux作为全球最流行的开源操作系统内核,自1991年由Linus Torvalds创建以来,已经发展成为服务器、云计算和嵌入式设备领域的主导力量。根据最新统计,全球96.3%的顶级Web服务器、80%的公有云工作负载都运行在Linux系统上。这种技术统治力使得Linux技能成为IT从业者的必备能力。
提示:初学者常犯的错误是直接记忆命令而不理解其设计哲学。Linux的精髓在于"一切皆文件"的抽象理念和模块化设计思想。
Linux系统由三大核心组件构成:
- 内核:负责进程调度、内存管理、设备驱动等基础功能
- Shell:用户与系统交互的命令行接口(如bash、zsh)
- 工具集:GNU核心工具(cp/mv/ls等)和各种开源软件
2. Linux基础命令精要
2.1 文件系统操作
# 目录导航 pwd # 显示当前路径 cd ~/docs # 切换目录 ls -alh # 详细列表显示(含隐藏文件) # 文件操作 cp -av source dest # 归档复制(保留属性) mv file newdir/ # 移动并重命名 rm -i *.tmp # 交互式删除常见陷阱:
- 使用
rm -rf /会导致系统毁灭性删除(实际需要加--no-preserve-root) - 文件名含空格时要用引号包裹:
mv "my file" newname
2.2 文本处理三剑客
# grep文本搜索 grep -rn "error" /var/log/ # 递归搜索错误信息 # sed流编辑器 sed -i 's/old/new/g' file.txt # 批量替换文本 # awk数据处理 awk '{sum+=$3} END{print sum}' data.csv # 求第三列总和效率技巧:
- 结合管道符使用:
cat log.txt | grep "404" | awk '{print $7}' | sort | uniq -c - 使用
-i.bak参数先备份再修改:sed -i.bak 's/foo/bar/' file
3. 系统管理实战
3.1 用户与权限管理
# 用户管理 useradd -m -s /bin/bash devuser # 创建用户 passwd devuser # 设置密码 usermod -aG sudo devuser # 授予sudo权限 # 权限控制 chmod 750 script.sh # 所有者可读写执行,组可读执行 chown user:group file # 变更属主和属组安全要点:
- 遵循最小权限原则
- 定期检查
/etc/passwd和/etc/shadow的异常修改 - 使用
visudo而非直接编辑sudoers文件
3.2 进程与服务管理
# 进程监控 top -u mysql # 监控特定用户进程 htop # 增强版top(需安装) ps aux --sort=-%mem | head # 内存占用Top5 # 服务控制 systemctl start nginx # 启动服务 systemctl enable docker # 设置开机自启 journalctl -u sshd -f # 实时查看服务日志排错技巧:
strace -p <PID>追踪进程系统调用lsof -i :80查看80端口占用情况systemctl status --full显示完整服务状态
4. Shell脚本编程进阶
4.1 脚本基础结构
#!/bin/bash # 注释:脚本说明 set -euo pipefail # 严格模式 # 变量定义 CONFIG_FILE="/etc/app.conf" # 函数定义 check_disk() { local usage=$(df -h / | awk 'NR==2{print $5}') echo "Disk usage: $usage" } # 主逻辑 main() { [ $# -eq 0 ] && usage check_disk process_input "$@" }最佳实践:
- 使用
[[ ]]代替[ ]进行条件测试 - 总在变量引用外加双引号:
"$var" - 使用
$(cmd)而非反引号执行命令替换
4.2 实用脚本案例
日志分析脚本:
#!/bin/bash # 分析Nginx日志获取TOP10访问IP LOG_FILE=${1:-/var/log/nginx/access.log} [ -f "$LOG_FILE" ] || { echo "文件不存在"; exit 1; } awk '{print $1}' "$LOG_FILE" | sort | uniq -c | sort -nr | head定时备份脚本:
#!/bin/bash # 数据库每日备份 BACKUP_DIR="/backups/mysql" DATE=$(date +%Y%m%d) MYSQL_CMD="mysqldump -uroot -p$DB_PASS" [ -d "$BACKUP_DIR" ] || mkdir -p "$BACKUP_DIR" for db in $($MYSQL_CMD -e "SHOW DATABASES;" | grep -Ev "Database|schema") do $MYSQL_CMD "$db" | gzip > "${BACKUP_DIR}/${db}_${DATE}.sql.gz" done find "$BACKUP_DIR" -type f -mtime +30 -delete5. 网络配置与安全
5.1 网络工具集
# 基础诊断 ping -c4 example.com # 限制发送包数 traceroute -n 8.8.8.8 # 禁用反向DNS查询 mtr --report google.com # 持续路由跟踪 # 高级工具 ss -tulnp # 替代netstat查看连接 iperf3 -c server_ip # 网络带宽测试 tcpdump -i eth0 port 80 -w capture.pcap # 抓包分析网络配置示例:
# 静态IP配置(/etc/netplan/01-netcfg.yaml) network: version: 2 ethernets: eth0: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]5.2 防火墙配置
# UFW简易防火墙 ufw default deny incoming ufw allow ssh ufw allow 443/tcp ufw enable # 高级iptables规则 iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 3 -j DROP安全加固建议:
- 禁用root远程登录(/etc/ssh/sshd_config)
- 使用密钥认证替代密码登录
- 定期审计sudo权限列表
- 配置fail2ban防止暴力破解
6. 性能调优实战
6.1 系统监控指标
# CPU监控 mpstat -P ALL 1 # 每核CPU利用率 pidstat -u 1 # 进程级CPU使用 # 内存分析 free -h # 内存概况 vmstat 1 # 虚拟内存统计 # IO性能 iostat -xz 1 # 磁盘IO统计 iotop -o # 实时IO进程监控6.2 调优参数示例
内核参数调优(/etc/sysctl.conf):
# 提升TCP性能 net.core.somaxconn = 4096 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.tcp_fastopen = 3 # 内存管理 vm.swappiness = 10 vm.dirty_ratio = 60 vm.dirty_background_ratio = 10磁盘调度器选择:
# 查看当前调度器 cat /sys/block/sda/queue/scheduler # 更改为deadline调度器(适合数据库) echo deadline > /sys/block/sda/queue/scheduler7. 容器化与自动化
7.1 Docker基础操作
# 镜像管理 docker pull nginx:alpine docker image ls # 容器操作 docker run -d -p 80:80 --name web nginx docker exec -it web sh # 清理资源 docker system prune -f生产建议:
- 使用非root用户运行docker(dockerd-rootless)
- 限制容器资源:
--memory 512m --cpus 1.5 - 使用docker-compose编排多容器应用
7.2 Ansible自动化示例
主机清单(inventory.ini):
[webservers] web1 ansible_host=192.168.1.10 web2 ansible_host=192.168.1.11 [webservers:vars] ansible_user=admin ansible_ssh_private_key_file=~/.ssh/deploy_keyPlaybook(deploy.yml):
--- - hosts: webservers become: yes tasks: - name: Ensure Nginx is installed apt: name: nginx state: latest update_cache: yes - name: Copy config file template: src: templates/nginx.conf.j2 dest: /etc/nginx/nginx.conf notify: restart nginx handlers: - name: restart nginx systemd: name: nginx state: restarted8. 常见问题排错指南
8.1 启动故障排查
无法进入系统时:
- 在GRUB菜单按e编辑启动参数
- 在linux行末尾添加
init=/bin/bash - Ctrl+X启动到单用户模式
- 挂载根分区:
mount -o remount,rw / - 修复问题后:
exec /sbin/init
关键日志文件:
/var/log/boot.log:系统启动日志/var/log/messages:通用系统消息/var/log/syslog:核心系统日志journalctl -xb:查看本次启动日志
8.2 性能问题诊断流程
- 整体负载:
uptime查看load average - CPU瓶颈:
top检查us/sy/wa指标 - 内存压力:
free -h观察available值 - IO等待:
iostat -x 1看await/%util - 网络瓶颈:
iftop -nP查看带宽使用
进阶工具:
perf top:CPU热点函数分析bpftrace:动态内核追踪ebpf:深度性能分析
9. 学习路径与资源推荐
9.1 分阶段学习路线
初学者(1-3个月):
- 掌握50+基础命令用法
- 理解文件权限与用户管理
- 学会vim基本编辑操作
- 能够编写简单shell脚本
中级(3-12个月):
- 深入理解进程管理与服务控制
- 掌握sed/awk高级文本处理
- 实现自动化运维脚本
- 熟悉网络配置与防火墙
高级(1年以上):
- 内核参数调优与性能分析
- 安全加固与漏洞防护
- 容器编排与云原生技术
- 参与开源项目贡献
9.2 优质学习资源
在线文档:
- Linux Documentation Project
- Arch Wiki
- Kernel.org Docs
实践平台:
- OverTheWire Bandit :游戏化学习
- Linux Journey :交互式教程
- Katacoda :在线实验环境
书籍推荐:
- 《鸟哥的Linux私房菜》- 基础篇
- 《Linux命令行与shell脚本编程大全》
- 《UNIX环境高级编程》
- 《性能之巅:洞悉系统、企业与云计算》