1. Linux指令系统概述
Linux作为现代操作系统的基石,其命令行界面(CLI)的高效性远超图形界面。我从业15年来见证过无数工程师因为掌握核心指令而效率倍增的案例。不同于Windows的图形化操作,Linux的精髓在于通过简洁的指令组合完成复杂任务,这也是为什么全球90%的服务器都运行Linux系统。
提示:学习Linux指令就像学习一门新语言,初期需要记忆基础词汇(指令),后期则要掌握语法(管道/重定向)和表达技巧(脚本编写)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件系统操作指令精要
2.1 目录导航与查看
pwd指令看似简单,但在复杂目录结构中能快速定位当前路径。我常看到新手在多层目录中迷失方向,这时:
bash复制pwd && ls -lh
这个组合能同时显示当前位置和目录内容详情,-lh参数用人类可读格式显示文件大小。
cd指令的进阶用法:
cd -返回上次所在目录cd ~快速回到用户主目录cd ../..向上移动两级目录
2.2 文件操作四件套
cp/mv/rm/touch是文件管理的核心指令,但隐藏着许多坑:
cp -a保留所有文件属性(权限、时间戳等),备份时必用mv -i覆盖前提示确认,防止误操作rm的致命陷阱:- 永远不要用
rm -rf /(会删除整个系统) - 建议先
ls确认文件再删除 - 使用
trash-cli替代直接删除
- 永远不要用
3. 文本处理三剑客
3.1 grep:文本搜索神器
bash复制grep -rn "error" /var/log/
这个命令会在/var/log/目录递归搜索含"error"的行,显示行号(-n)。我常用组合:
-i忽略大小写-v反向匹配-A3 -B2显示匹配行前后内容
3.2 sed:流式文本编辑器
批量替换文本的经典场景:
bash复制sed -i 's/old/new/g' file.txt
-i直接修改文件,不加则只输出到屏幕。我曾用这个指令半小时完成上千个配置文件的批量修改。
3.3 awk:报表生成利器
统计Nginx日志中每个IP的访问次数:
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr
这个管道组合展示了Linux指令的强大之处:每个工具只做一件事,但组合起来就能解决复杂问题。
4. 系统监控与进程管理
4.1 实时监控工具
top的增强版htop提供更直观的界面:
bash复制htop -d 10 # 每10秒刷新一次
关键指标解读:
- Load average > CPU核心数表示系统过载
- %wa过高说明I/O瓶颈
- RES列显示实际内存占用
4.2 进程控制技巧
后台运行任务的正确姿势:
bash复制nohup python script.py > output.log 2>&1 &
这个命令解决了三个问题:
nohup防止SSH断开后进程终止- 重定向输出到日志文件
&放入后台运行
5. 网络诊断与配置
5.1 连通性测试
ping和traceroute的进阶用法:
bash复制ping -c 5 -i 0.2 example.com # 发送5个包,间隔0.2秒
traceroute -T -p 443 example.com # TCP方式跟踪443端口
5.2 网络状态分析
netstat已被ss取代,现代Linux推荐:
bash复制ss -tulnp # 查看所有监听端口
关键参数:
-tTCP连接-uUDP连接-l监听状态-n显示数字端口-p显示进程信息
6. 权限管理与用户控制
6.1 文件权限深度解析
chmod的数字表示法:
code复制rwx r-x r-x => 755
计算规则:
- 读(r)=4, 写(w)=2, 执行(x)=1
- 三组权限分别对应所有者、所属组、其他用户
6.2 sudo的配置艺术
编辑/etc/sudoers时务必使用:
bash复制visudo # 提供语法检查
典型授权示例:
code复制username ALL=(ALL) NOPASSWD: /usr/bin/apt
允许用户无需密码执行apt命令
7. 软件包管理实战
7.1 APT/YUM/DNF对比
| 特性 | APT(Debian) | YUM(RHEL7) | DNF(RHEL8+) |
|---|---|---|---|
| 依赖解析速度 | 中等 | 慢 | 快 |
| 插件系统 | 简单 | 复杂 | 模块化 |
| 历史记录 | 有限 | 完整 | 完整 |
7.2 编译安装的通用流程
bash复制./configure --prefix=/usr/local
make -j$(nproc) # 使用所有CPU核心编译
sudo make install
遇到依赖问题时,ldd可检查缺少的库文件
8. Shell脚本编程基础
8.1 变量处理技巧
bash复制name=${USER:-guest} # 如果USER未设置则使用guest
count=$((10 + 5)) # 算术运算
字符串操作:
bash复制path="/usr/local/bin"
echo ${path#/usr} # 删除最短匹配前缀
echo ${path%%/bin} # 删除最长匹配后缀
8.2 条件判断最佳实践
总是用[[ ]]替代[ ],支持更多特性:
bash复制if [[ -f "$file" && -r "$file" ]]; then
echo "可读文件存在"
fi
测试文件属性:
-e存在-f是普通文件-d是目录-x可执行
9. 系统服务管理
9.1 systemctl完全指南
服务状态检查:
bash复制systemctl list-units --type=service --state=running
日志查看技巧:
bash复制journalctl -u nginx -f --since "1 hour ago"
关键参数:
-f实时跟踪-u指定服务--since时间范围
10. 磁盘与存储管理
10.1 磁盘空间分析
df和du的组合使用:
bash复制df -h # 查看挂载点使用情况
du -sh * | sort -h # 排序显示当前目录大小
找出大文件的利器:
bash复制find / -type f -size +100M -exec ls -lh {} \;
10.2 LVM实战操作
创建逻辑卷的标准流程:
bash复制pvcreate /dev/sdb1
vgcreate vg_data /dev/sdb1
lvcreate -L 50G -n lv_www vg_data
mkfs.ext4 /dev/vg_data/lv_www
11. 安全加固要点
11.1 SSH安全配置
/etc/ssh/sshd_config关键参数:
code复制PermitRootLogin no
PasswordAuthentication no
AllowUsers alice bob
Port 2222
修改后需重启服务:
bash复制systemctl restart sshd
ss -tlnp | grep 2222 # 验证新端口
11.2 防火墙策略
UFW简化了iptables操作:
bash复制ufw allow 22/tcp
ufw limit 22/tcp # 防暴力破解
ufw enable
12. 性能调优入门
12.1 内存优化
/etc/sysctl.conf关键参数:
code复制vm.swappiness=10 # 减少swap使用
vm.vfs_cache_pressure=50 # 保留更多目录缓存
12.2 IO调度器选择
查看当前调度器:
bash复制cat /sys/block/sda/queue/scheduler
SSD推荐使用deadline或none(noop)
13. 容器时代的新指令
13.1 Podman基础
替代Docker的轻量方案:
bash复制podman run -d -p 8080:80 nginx
podman generate systemd --name nginx > /etc/systemd/system/nginx.service
13.2 构建最小镜像
多阶段构建示例:
dockerfile复制FROM golang:1.18 as builder
WORKDIR /app
COPY . .
RUN go build -o app .
FROM scratch
COPY --from=builder /app/app /
CMD ["/app"]
14. 终端生产力工具
14.1 tmux多会话管理
基本工作流:
bash复制tmux new -s project # 新建会话
Ctrl+b d # 分离会话
tmux attach -t project # 重新连接
14.2 命令行编辑器选择
nano:新手友好vim:高效但学习曲线陡峭micro:现代替代品
15. 故障排查工具箱
15.1 系统日志分析
bash复制tail -f /var/log/syslog # 实时查看系统日志
dmesg -T # 带时间戳的内核日志
15.2 性能瓶颈定位
perf工具基本用法:
bash复制perf top # 实时监控CPU使用
perf record -g -p $(pidof nginx) # 记录进程调用栈
