1. Linux系统概述与核心特性Linux作为开源操作系统的代表其发展历程可追溯至1991年Linus Torvalds发布的首个内核版本。经过三十余年的演进现已形成包含内核、Shell、工具链和应用程序的完整生态系统。与Windows等商业系统相比Linux最显著的特征在于其模块化设计——内核仅提供基础功能用户可根据需要自由组合各类组件。内核版本号采用主版本.次版本.修订号的命名规则其中次版本为奇数表示开发版偶数表示稳定版。例如5.4.0中5为主版本号4偶数表示稳定分支0则是修订编号。这种版本策略保证了企业用户能获得长期支持版本LTS而开发者可以体验前沿特性。提示选择发行版时企业环境推荐CentOS/RHEL等商业支持版本个人用户可选择Ubuntu/Fedora等桌面优化系统嵌入式开发则倾向Buildroot/Yocto等定制化方案。2. 文件系统与目录结构解析Linux采用单一的树状目录结构所有存储设备都挂载在根目录/下的特定位置。这与Windows的盘符划分有本质区别。关键目录包括/bin基础命令二进制文件/etc系统配置文件/home用户主目录/var可变数据日志、缓存等/dev设备文件接口ext4是目前最常用的日志文件系统其优势在于支持最大1EB的分区和16TB的单个文件日志功能确保意外断电时的数据完整性延迟分配技术提升写入性能实际操作中常用命令组合示例# 查看磁盘使用情况并按大小排序 df -h | sort -k5 -rh # 查找7天内修改过的.log文件 find /var/log -name *.log -mtime -73. 用户权限管理深度实践Linux权限模型基于三组权限位用户/组/其他和三种操作权限读/写/执行。通过chmod命令修改权限时数字模式如755比符号模式urx更适于脚本编写。特殊权限位需要特别注意SUID4执行时临时获取所有者权限SGID2目录下新建文件继承组IDSticky1仅文件所有者可删除/tmp目录下的文件用户管理关键步骤# 创建开发组并设置GID为2000 groupadd -g 2000 developers # 添加用户并指定主组和附加组 useradd -g developers -G docker,sudo newuser # 设置密码有效期策略 chage -M 90 -W 7 newuser4. 进程管理与系统监控ps aux命令输出的关键列解析%CPU进程占用的CPU百分比VSZ虚拟内存用量KBRSS常驻内存集实际物理内存STAT进程状态S休眠、R运行、Z僵尸等系统监控黄金命令组合# 实时监控系统资源按F切换显示模式 top # 磁盘I/O监控需安装sysstat包 iostat -dx 2 # 网络连接统计 ss -tulnp对于异常进程处理流程通过top定位高负载进程ID使用strace -p [PID]追踪系统调用分析/proc/[PID]/下的status和io文件必要时用kill -TERM发送终止信号5. 网络配置与防火墙实战NetworkManager已成为现代Linux发行版的标准网络管理工具其命令行工具nmcli的典型用法# 列出所有连接 nmcli con show # 添加静态IP连接 nmcli con add con-name office ifname eth0 type ethernet \ ip4 192.168.1.100/24 gw4 192.168.1.1 # 配置DNS服务器 nmcli con mod office ipv4.dns 8.8.8.8 8.8.4.4firewalld作为动态防火墙解决方案其核心概念包括zone区域预定义的信任级别如public/dmzservice服务预定义端口组合如http/httpsrich rule富规则高级过滤条件配置示例# 允许来自192.168.1.0/24的SSH访问 firewall-cmd --permanent --zonepublic \ --add-rich-rulerule familyipv4 source address192.168.1.0/24 service namessh accept # 开放自定义端口 firewall-cmd --add-port8080/tcp --permanent6. Shell脚本编程精要Bash脚本调试技巧#!/bin/bash set -euo pipefail # 启用严格模式 trap echo Error at line $LINENO ERR # 错误捕获 # 使用数组而非字符串处理文件列表 files(*.log) for f in ${files[]}; do [[ -f $f ]] || continue process_file $f done高效文本处理三板斧grep进行模式匹配# 查找包含ERROR但不含TIMEOUT的日志行 grep -i error app.log | grep -vi timeoutawk进行字段提取# 统计不同HTTP状态码出现次数 awk {print $9} access.log | sort | uniq -csed进行流编辑# 批量替换配置文件中的旧域名 sed -i.bak s/old.domain/new.domain/g *.conf7. 软件包管理进阶RPM系CentOS/RHEL与DEB系Ubuntu/Debian包管理对比操作yum/dnf (RPM)apt (DEB)更新索引yum makecacheapt update安装软件yum install httpdapt install apache2查询文件归属yum provides /bin/bashapt-file search bash清理缓存yum clean allapt clean源码编译安装的通用流程tar xzf package-1.0.tar.gz cd package-1.0 ./configure --prefix/usr/local \ --with-ssl/opt/openssl make -j$(nproc) sudo make install8. 系统服务与启动管理systemd的核心命令# 查看服务依赖关系 systemctl list-dependencies sshd # 分析服务启动耗时 systemd-analyze blame # 创建自定义服务单元 cat /etc/systemd/system/myapp.service EOF [Unit] DescriptionMy Custom Application Afternetwork.target [Service] ExecStart/usr/local/bin/myapp --daemon Restarton-failure [Install] WantedBymulti-user.target EOF日志管理要点使用journalctl查询系统日志# 追踪特定服务的日志 journalctl -u nginx -f # 显示最近1小时的关键错误 journalctl --since 1 hour ago -p err配置logrotate实现日志轮转# 示例配置/etc/logrotate.d/myapp /var/log/myapp/*.log { daily missingok rotate 30 compress delaycompress sharedscripts postrotate systemctl reload myapp /dev/null endscript }9. 安全加固最佳实践SSH安全配置模板/etc/ssh/sshd_configPort 2222 # 修改默认端口 PermitRootLogin no MaxAuthTries 3 LoginGraceTime 1m AllowUsers admin deploy PasswordAuthentication no # 强制密钥认证自动化安全审计工具Lynis系统配置检查lynis audit systemOpenSCAP合规性扫描oscap xccdf eval --profile stig-rhel7 \ --results scan-results.xml \ /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml内核参数加固示例/etc/sysctl.d/99-security.conf# 禁用ICMP重定向 net.ipv4.conf.all.accept_redirects 0 # 防止SYN洪水攻击 net.ipv4.tcp_syncookies 1 # 限制核心转储 fs.suid_dumpable 010. 性能调优方法论内存优化策略调整swappiness值0-100范围echo 10 /proc/sys/vm/swappiness使用zRAM压缩内存modprobe zram echo lz4 /sys/block/zram0/comp_algorithm echo 2G /sys/block/zram0/disksize mkswap /dev/zram0 swapon /dev/zram0磁盘I/O调度器选择CFQ适合传统机械硬盘默认Deadline数据库应用首选NOOP虚拟化环境最佳 修改方法echo deadline /sys/block/sda/queue/scheduler网络性能优化参数# 增大TCP窗口大小 echo net.ipv4.tcp_window_scaling 1 /etc/sysctl.conf # 启用TCP快速打开 echo net.ipv4.tcp_fastopen 3 /etc/sysctl.conf sysctl -p