1. Linux系统安装与初始化配置作为一名Linux系统管理员我经常需要在新机器上部署系统。虽然网上有很多安装教程但实际安装过程中总会遇到各种坑。这里我分享下CentOS 7的安装经验特别是那些教程里不会提到的细节。首先需要准备安装介质。我推荐使用Ventoy制作多系统启动U盘相比传统刻录方式更灵活。下载CentOS 7 ISO后建议校验SHA256值我就曾因镜像损坏导致安装失败。虚拟机安装时VMware的硬件兼容性选择很关键 - 如果要在老服务器上迁移记得选低版本的兼容模式。分区方案是安装时最容易出错的地方。对于生产服务器我建议/boot 500MB (EXT4)swap 内存的1.5倍内存8GB时可适当减小/ 剩余空间的70%XFS/home 剩余空间的30%XFS重要提示在BIOS中务必关闭Secure Boot否则某些硬件驱动可能无法加载。我曾遇到网卡驱动因Secure Boot导致加载失败的情况。安装完成后第一件事是更新系统yum update -y yum install -y epel-release然后配置基础环境修改主机名hostnamectl set-hostname your-hostname配置静态IP生产环境必须nmcli con mod eth0 ipv4.addresses 192.168.1.100/24 nmcli con mod eth0 ipv4.gateway 192.168.1.1 nmcli con mod eth0 ipv4.dns 8.8.8.8 8.8.4.4 nmcli con mod eth0 ipv4.method manual nmcli con up eth02. Linux文件系统深度解析2.1 关键目录功能详解Linux目录结构看似复杂实则设计精妙。经过多年运维我总结出这些目录的实际应用场景/etc- 这个目录藏着系统90%的配置奥秘。新手常犯的错误是直接修改配置文件而不备份。建议每次修改前cp /etc/xxx.conf /etc/xxx.conf.bak_$(date %F)/var- 这是系统运行的黑匣子。其中几个重要子目录/var/log日志文件建议用logrotate定期切割/var/spool打印队列、邮件队列等/var/wwwWeb服务默认目录/proc- 虚拟文件系统可以直接修改某些参数调优系统。例如临时开启IP转发echo 1 /proc/sys/net/ipv4/ip_forward2.2 文件权限深入理解Linux权限系统比表面看到的更强大。除了基本的rwx还有几个高级特性SUID/SGIDSUID执行时以文件所有者权限运行如passwd命令SGID对目录设置时新建文件继承目录的组权限设置方法chmod us file # 设置SUID chmod gs dir # 设置SGID粘滞位Sticky Bit 用于共享目录如/tmp防止用户删除他人文件chmod t /shared_dir3. 高效命令行操作技巧3.1 必须掌握的20个核心命令根据多年经验这些命令使用频率最高grep- 文本搜索神器grep -rin error /var/log/ # 递归搜索错误日志find- 文件查找全能手find / -type f -size 100M -exec ls -lh {} \; # 查找大于100MB的文件rsync- 增量同步利器rsync -avz --delete /source/ userremote:/dest/lsof- 查看打开文件lsof -i :80 # 查看80端口占用3.2 提高效率的Shell技巧命令别名把常用命令设为别名能节省大量时间。我的~/.bashrc中有这些实用别名alias llls -alhF --colorauto alias grepgrep --colorauto alias dfdf -h alias dudu -h历史命令妙用!$上条命令的最后一个参数!!重复上条命令^old^new替换上条命令中的字符串SSH免密登录配置生成密钥对ssh-keygen -t rsa -b 4096上传公钥ssh-copy-id userremote测试登录ssh userremote4. 系统管理进阶知识4.1 用户与权限管理实战sudo精细控制 不要直接修改/etc/sudoers应该visudo -f /etc/sudoers.d/admin添加如下内容User_Alias ADMINS user1, user2 ADMINS ALL(ALL) NOPASSWD: ALLACL权限 当基础权限不够时可以使用ACLsetfacl -m u:user:rwx /shared_dir # 给用户添加权限 getfacl /shared_dir # 查看ACL权限4.2 系统服务管理systemctl常用操作systemctl daemon-reload # 重载服务配置 systemctl enable service # 设置开机启动 systemctl restart service # 重启服务 journalctl -u service -f # 查看服务日志定时任务用户级crontab -e系统级/etc/crontab建议格式# 每天3点备份 0 3 * * * /usr/local/bin/backup.sh /dev/null 215. 网络配置与故障排查5.1 网络配置详解ip命令替代ifconfigip addr show # 查看IP ip route show # 查看路由 ip link set eth0 up # 启用网卡防火墙配置firewall-cmd --permanent --add-port80/tcp firewall-cmd --reload5.2 网络故障排查流程检查物理连接ip link show测试连通性ping -c4 8.8.8.8检查DNS解析dig example.com追踪路由traceroute example.com检查端口nc -zv host port6. 性能监控与优化6.1 常用监控命令实时监控三剑客top # 进程监控 iftop -i eth0 # 网络流量 iotop # 磁盘IO系统状态一览vmstat 1 # 内存/CPU/IO统计 sar -n DEV 1 # 网络统计 dstat -cdngy 1 # 综合监控6.2 性能优化要点内存优化调整swappinessecho 10 /proc/sys/vm/swappiness清理缓存sync; echo 3 /proc/sys/vm/drop_caches磁盘IO优化使用deadline调度器echo deadline /sys/block/sda/queue/scheduler调整预读值blockdev --setra 1024 /dev/sda7. 安全加固实践7.1 基础安全配置SSH安全加固Port 2222 # 修改默认端口 PermitRootLogin no # 禁止root登录 MaxAuthTries 3 # 限制尝试次数 ClientAliveInterval 300 # 超时断开 PasswordAuthentication no # 禁用密码登录系统审计 安装auditd并配置规则yum install audit auditctl -l /etc/shadow -p wa -k shadow_change7.2 入侵检测关键文件监控# 监控/etc/passwd变化 auditctl -w /etc/passwd -p wa -k passwd_changes登录监控last -i # 查看登录记录 grep Failed /var/log/secure # 查看失败登录8. 实用脚本示例8.1 自动备份脚本#!/bin/bash # 定义变量 BACKUP_DIR/backups DATE$(date %F) DB_USERroot DB_PASSpassword # 创建备份目录 mkdir -p $BACKUP_DIR/$DATE # MySQL备份 mysqldump -u$DB_USER -p$DB_PASS --all-databases | gzip $BACKUP_DIR/$DATE/mysql_all.sql.gz # 文件备份 tar -czf $BACKUP_DIR/$DATE/etc.tar.gz /etc tar -czf $BACKUP_DIR/$DATE/www.tar.gz /var/www # 删除7天前的备份 find $BACKUP_DIR -type d -mtime 7 | xargs rm -rf8.2 服务器监控脚本#!/bin/bash # 报警阈值 CPU_THRESHOLD80 MEM_THRESHOLD90 DISK_THRESHOLD85 # 获取系统状态 CPU_USE$(top -bn1 | grep Cpu(s) | awk {print $2} | cut -d. -f1) MEM_USE$(free | awk /Mem/{printf(%d), $3/$2*100}) DISK_USE$(df -h / | awk /\//{print $(NF-1)} | tr -d %) # 检查并报警 [ $CPU_USE -gt $CPU_THRESHOLD ] echo CPU使用率过高: $CPU_USE% | mail -s CPU警报 adminexample.com [ $MEM_USE -gt $MEM_THRESHOLD ] echo 内存使用率过高: $MEM_USE% | mail -s 内存警报 adminexample.com [ $DISK_USE -gt $DISK_THRESHOLD ] echo 磁盘使用率过高: $DISK_USE% | mail -s 磁盘警报 adminexample.com9. 常见问题解决方案9.1 磁盘空间不足排查快速定位大文件du -h --max-depth1 / | sort -h查找并删除日志文件find /var/log -type f -name *.log -size 100M -exec rm -f {} \;处理已删除但未释放空间的文件lsof | grep deleted # 找到占用进程 kill -9 PID # 结束进程9.2 性能瓶颈诊断CPU瓶颈top -H -p $(pgrep nginx) # 查看具体线程 perf top # 性能分析内存泄漏valgrind --leak-checkfull ./programIO瓶颈iostat -x 1 # 查看IO等待 iotop # 查看进程IO10. 进阶学习建议掌握Linux需要持续实践。我建议每天学习一个新命令并理解其参数定期在测试环境尝试新配置参与开源项目阅读优秀代码建立自己的知识库记录问题和解决方案对于想深入Linux内核的同学可以从这些方面入手系统调用机制进程调度原理内存管理实现文件系统架构最后提醒生产环境操作前一定要备份我职业生涯中最贵的教训就是一次没有备份的配置文件修改导致系统崩溃。现在我的工作准则就是不备份不操作。