1. Linux基础概念解析
Linux作为现代计算领域最重要的操作系统之一,其核心设计哲学可以追溯到Unix的"一切皆文件"理念。我在实际运维工作中发现,理解这个基础概念能帮助新人快速适应Linux环境。简单来说,所有硬件设备、进程信息、系统配置在Linux中都被抽象为文件对象,通过统一的文件操作接口进行管理。
重要提示:新手常犯的错误是只把Linux当作"另一个Windows"来使用,而忽略了其设计哲学的本质差异。
文件系统层次结构标准(FILESYSTEM HIERARCHY STANDARD)是另一个必须掌握的基础。典型的目录结构包括:
- /bin:基础命令二进制文件
- /etc:系统配置文件
- /var:可变数据文件
- /home:用户主目录
- /proc:虚拟文件系统,提供进程和内核信息
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心命令精要
2.1 文件操作命令集
ls -l命令输出的完整解析是面试常见考点。以drwxr-xr-x 2 user group 4096 Jan 1 10:00 dir为例:
- 首字符'd'表示目录类型(-为普通文件,l为链接)
- 后续9个字符分三组,分别表示所有者、所属组和其他用户的rwx权限
- 数字2表示硬链接计数
- 最后是大小、修改时间和名称
文件权限修改的深层原理:
bash复制chmod 755 file # 所有者rwx,组和其他r-x
chown user:group file # 修改所有者和组
2.2 文本处理三剑客
grep命令的进阶用法:
bash复制grep -E "pattern1|pattern2" file # 扩展正则匹配
grep -v "exclude" file # 反向选择
grep -r "text" /path # 递归搜索
sed流编辑器实战示例:
bash复制sed 's/old/new/g' file # 全局替换
sed -i.bak '1,5d' file # 删除1-5行并备份原文件
sed -n '/pattern/p' file # 只打印匹配行
awk数据处理典型场景:
bash复制awk '{print $1,$3}' file # 打印第1和第3列
awk -F: '{print $1}' /etc/passwd # 以冒号分隔处理
awk '$3 > 100 {print $0}' data # 条件过滤
3. 系统管理核心知识
3.1 进程管理详解
ps aux输出关键列解析:
- USER:进程所有者
- PID:进程ID
- %CPU:CPU占用率
- %MEM:内存占用率
- VSZ:虚拟内存大小
- RSS:常驻内存集
- STAT:进程状态(S睡眠,R运行,Z僵尸)
进程优先级调整实战:
bash复制nice -n 10 command # 启动时设置优先级
renice 15 -p 1234 # 调整运行中进程优先级
3.2 用户与权限体系
/etc/passwd文件字段解析(冒号分隔):
- 用户名
- 密码占位符(x表示在/etc/shadow)
- UID
- GID
- 描述信息
- 主目录
- 登录shell
sudoers文件配置要点:
code复制user ALL=(ALL:ALL) NOPASSWD: /sbin/reboot # 允许无密码执行特定命令
%group ALL=(ALL) ALL # 组权限配置
Defaults !requiretty # 非终端环境允许sudo
4. 网络配置与故障排查
4.1 网络工具集
netstat替代方案ss的使用:
bash复制ss -tulnp # 查看监听端口(类似netstat -tulnp)
ss -s # 统计信息
ss dst 192.168.1.100 # 过滤特定连接
tcpdump抓包实战:
bash复制tcpdump -i eth0 port 80 -w capture.pcap # 抓取80端口流量
tcpdump -nn 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn' # 只抓SYN包
4.2 防火墙配置
iptables四表五链原理:
- filter表(默认):INPUT、OUTPUT、FORWARD链
- nat表:PREROUTING、POSTROUTING链
- 典型配置示例:
bash复制iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH
iptables -P FORWARD DROP # 默认拒绝转发
firewalld基础操作:
bash复制firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload # 重载配置
5. Shell脚本编程精髓
5.1 变量与参数处理
特殊参数解析:
- $0:脚本名称
- $#:参数个数
- $@:所有参数(保持独立)
- $*:所有参数(合并为单个字符串)
- $$:当前进程PID
变量扩展技巧:
bash复制${var:-default} # 空时使用默认值
${var%.*} # 去除后缀
${var#prefix} # 去除前缀
5.2 流程控制结构
条件判断最佳实践:
bash复制if [[ -f "$file" && -r "$file" ]]; then
echo "可读文件存在"
fi
case "$OS" in
Linux) echo "Linux系统" ;;
Darwin) echo "Mac系统" ;;
*) echo "其他系统" ;;
esac
循环结构示例:
bash复制while read line; do
echo "处理: $line"
done < input.txt
for i in {1..10}; do
echo "计数: $i"
done
6. 性能分析与优化
6.1 系统监控工具
top命令交互操作:
- M:按内存排序
- P:按CPU排序
- 1:显示所有CPU核心
- h:帮助信息
vmstat输出解读(单位:KB):
- procs:r运行队列,b阻塞进程
- memory:swpd虚拟内存,free空闲
- swap:si换入,so换出
- io:bi块读,bo块写
- system:in中断,cs上下文切换
- cpu:us用户,sy系统,id空闲
6.2 磁盘I/O分析
iostat关键指标:
- %util:设备利用率
- await:平均I/O等待时间
- svctm:平均服务时间
iotop常用参数:
bash复制iotop -o # 只显示实际I/O进程
iotop -P # 按进程分组
iotop -a # 累计I/O统计
7. 安全加固实践
7.1 SSH安全配置
/etc/ssh/sshd_config关键设置:
code复制PermitRootLogin no # 禁止root登录
PasswordAuthentication no # 禁用密码认证
AllowUsers user1 user2 # 白名单用户
MaxAuthTries 3 # 最大尝试次数
密钥对认证流程:
bash复制ssh-keygen -t ed25519 # 生成密钥
ssh-copy-id user@host # 部署公钥
7.2 系统审计
auditd规则示例:
bash复制auditctl -a always,exit -F arch=b64 -S open -F path=/etc/passwd # 监控passwd文件访问
auditctl -l # 列出当前规则
ausearch -k mykey # 按key搜索日志
8. 常见问题排查指南
8.1 启动故障处理
系统启动流程详解:
- BIOS/UEFI初始化
- 引导加载程序(GRUB)
- 内核初始化
- systemd/sysvinit
- 运行级别/target
救援模式操作:
bash复制mount /dev/sda1 /mnt # 挂载根分区
chroot /mnt # 切换根环境
passwd root # 重置密码
8.2 性能问题诊断
内存不足排查步骤:
- free -h查看内存使用
- top按内存排序找占用高的进程
- pmap -x PID分析进程内存分布
- 检查/var/log/messages是否有OOM killer记录
CPU负载高分析方法:
- uptime查看平均负载
- mpstat -P ALL查看各CPU核心使用
- perf top分析热点函数
- strace -p PID跟踪系统调用
