这世界上跑得最多的操作系统,不是 Windows,也不是 macOS,而是 Linux——互联网后端服务器约九成跑在 Linux 上。你手机里的安卓、你刷的每个网页、你用的每朵云,背后都站着一个黑底白字的终端。这一页从"第一次打开终端"讲起,把命令、脚本、服务、网络、监控、安全串成一条线,按 Ubuntu 24.04 LTS / Rocky Linux 9 的现代写法,带你从"小白"升级成"能自己管一台服务器的人"。
第 1 节 · 最新版本与兼容性一览
版本基线:Ubuntu 24.04 LTS / Rocky 9,Debian 系 vs RHEL 系。
第 2 节 · 为什么学 Linux,怎么把它跑起来
为什么学 Linux:发行版选择与学习路线。
第 3 节 · 文件系统与目录结构
文件系统与目录结构:一切皆文件,FHS 标准。
第 4 节 · 常用命令大全:二十条命令闯天下
常用命令大全:ls/cd/grep/find/awk/sed 高频命令。
第 5 节 · 用户与组管理
用户与组管理:useradd、sudo、权限 rwx。
第 6 节 · Shell 脚本编程(Bash)
Shell 脚本编程 Bash:变量、循环、函数、管道。
第 7 节 · 软件包管理:装软件的三种姿势
软件包管理:apt / dnf,源配置与常见仓库。
第 8 节 · 服务管理 systemd
服务管理 systemd:unit、systemctl、开机自启。
第 9 节 · 网络配置、防火墙与 SSH
网络配置、防火墙与 SSH:sshd、ufw/firewalld。
第 10 节 · 系统监控与日志体系
系统监控与日志体系:top/htop/journalctl。
第 11 节 · 定时任务 cron
定时任务 cron:crontab 写法与日志排查。
第 12 节 · 安全加固基础
安全加固基础:改端口、禁 root、fail2ban。
第 13 节 · 进阶路线与高频面试题
进阶路线与高频面试题:从运维到架构。
第 14 节 · 网络配置与抓包:把包看穿
网络抓包进阶:iptables/nftables/tcpdump/ss。
第 15 节 · 性能排查进阶:perf 与 eBPF 的眼睛
性能排查进阶:perf/eBPF/sar/vmstat/iostat。
第 16 节 · 内核调优与容器底层:Docker 其实是四件套
内核调优与容器底层:cgroups/namespaces/sysctl。
综合练习十道
最后这十道题,从命令、脚本到排错混合着来。别翻上面的答案,先自己想,再点开 details 对照。
1(命令题):统计 access.log 中 HTTP 状态码为 500 的请求有多少条
awk '$9 ~ /^5[0-9][0-9]$/' access.log | wc -l,或更简单 grep -c '" 500 ' access.log(取决于日志格式)。核心是 awk/grep 精确匹配状态码列。
2(命令题):把 /var/log 下所有 .log 文件中 7 天前的,复制到 /tmp/old_logs/ 再打包
mkdir -p /tmp/old_logs && find /var/log -name "*.log" -mtime +7 -exec cp {} /tmp/old_logs/ \; && tar -czf /tmp/old_logs.tar.gz -C /tmp old_logs。
3(脚本题):写脚本接收一个目录参数,统计其中普通文件、目录、可执行文件各有多少
f=$(find "$1" -type f | wc -l); d=$(find "$1" -type d | wc -l); x=$(find "$1" -type f -executable | wc -l); echo "文件 $f 目录 $d 可执行 $x"。注意 "$1" 加引号防空格。
4(脚本题):写脚本:如果 /tmp 分区使用率超过 90%,就发一行警告到日志
use=$(df /tmp | awk 'NR==2{print $5}' | tr -d '%'); [ "$use" -gt 90 ] && echo "[警告] /tmp 已用 $use%" >> /var/log/alert.log。
5(排错题):nginx 启动失败,systemctl status 显示 failed,下一步怎么查
先 systemctl status nginx 看错误摘要;再 journalctl -u nginx -n 50 看具体报错;多半是配置语法错(nginx -t 测试配置)或端口被占(ss -tulpn | grep :80)。
6(排错题):scp 传文件卡住不动,ping 服务器通,但 ssh 也连不上新会话
可能服务器连接数打满或网络 MTU 问题。先看 ss -s 连接数、dmesg | tail 有没有内核报错;必要时从控制台重启 sshd。
7(命令题):一行命令找出当前目录下最大的 3 个文件
find . -type f -exec du -h {} + | sort -rh | head -3。
8(命令题):把文件里所有的 localhost 批量改成 127.0.0.1,原地修改
sed -i 's/localhost/127.0.0.1/g' file。建议先 sed 's/.../' file 预览,或 sed -i.bak 留备份。
9(cron 题):要求每周五下午 6 点打包 /data 目录,怎么写 crontab
0 18 * * 5 tar -czf /backup/data_$(date +\%F).tar.gz -C / data。注意 crontab 里 % 要转义成 \%。
10(排错题):脚本手动跑没问题,放进 cron 就报"command not found"
典型的环境变量问题:cron 的 PATH 极短。脚本里所有命令写绝对路径,或在脚本开头 export PATH=/usr/local/bin:/usr/bin:/bin。
① 从装系统一路讲到安全加固:命令、脚本、包管理、systemd、网络、监控、cron,这条链路已经完整。
② 别再看第十篇教程了——去买个最便宜的云服务器,把 nginx 装起来、把第 5 章的脚本挂成 cron、把第 11 章的加固清单照做一遍。
③ Linux 是练出来的,不是看出来的。搞坏了重装就是,每个运维都重装过几十遍。动手,是这页教程唯一的作业。