技术栈学院 · Linux

这世界上跑得最多的操作系统,不是 Windows,也不是 macOS,而是 Linux——互联网后端服务器约九成跑在 Linux 上。你手机里的安卓、你刷的每个网页、你用的每朵云,背后都站着一个黑底白字的终端。这一页从"第一次打开终端"讲起,把命令、脚本、服务、网络、监控、安全串成一条线,按 Ubuntu 24.04 LTS / Rocky Linux 9 的现代写法,带你从"小白"升级成"能自己管一台服务器的人"。

版
第 1 节 · 最新版本与兼容性一览
Versions & Compatibility

版本基线:Ubuntu 24.04 LTS / Rocky 9,Debian 系 vs RHEL 系。

进入本节 →
01
第 2 节 · 为什么学 Linux,怎么把它跑起来
Why Linux · Distros · Installation

为什么学 Linux:发行版选择与学习路线。

进入本节 →
02
第 3 节 · 文件系统与目录结构
Filesystem Hierarchy · FHS

文件系统与目录结构:一切皆文件,FHS 标准。

进入本节 →
03
第 4 节 · 常用命令大全:二十条命令闯天下
Command Line Handbook

常用命令大全:ls/cd/grep/find/awk/sed 高频命令。

进入本节 →
04
第 5 节 · 用户与组管理
Users & Groups · sudo

用户与组管理:useradd、sudo、权限 rwx。

进入本节 →
05
第 6 节 · Shell 脚本编程(Bash)
Bash Scripting

Shell 脚本编程 Bash:变量、循环、函数、管道。

进入本节 →
06
第 7 节 · 软件包管理:装软件的三种姿势
Package Management · apt / dnf / source

软件包管理:apt / dnf,源配置与常见仓库。

进入本节 →
07
第 8 节 · 服务管理 systemd
systemd · systemctl

服务管理 systemd:unit、systemctl、开机自启。

进入本节 →
08
第 9 节 · 网络配置、防火墙与 SSH
Network · Firewall · SSH

网络配置、防火墙与 SSH:sshd、ufw/firewalld。

进入本节 →
09
第 10 节 · 系统监控与日志体系
Monitoring & Logging

系统监控与日志体系:top/htop/journalctl。

进入本节 →
10
第 11 节 · 定时任务 cron
cron · at · scheduled jobs

定时任务 cron:crontab 写法与日志排查。

进入本节 →
11
第 12 节 · 安全加固基础
Security Hardening

安全加固基础:改端口、禁 root、fail2ban。

进入本节 →
12
第 13 节 · 进阶路线与高频面试题
Roadmap & Interview

进阶路线与高频面试题:从运维到架构。

进入本节 →
14
第 14 节 · 网络配置与抓包:把包看穿
netfilter · iptables · nftables · tcpdump · ss

网络抓包进阶:iptables/nftables/tcpdump/ss。

进入本节 →
15
第 15 节 · 性能排查进阶:perf 与 eBPF 的眼睛
perf · eBPF · sar · vmstat · iostat

性能排查进阶:perf/eBPF/sar/vmstat/iostat。

进入本节 →
16
第 16 节 · 内核调优与容器底层:Docker 其实是四件套
sysctl · ulimit · namespaces · cgroups

内核调优与容器底层:cgroups/namespaces/sysctl。

进入本节 →
13

综合练习十道

Final Exercises

最后这十道题,从命令、脚本到排错混合着来。别翻上面的答案,先自己想,再点开 details 对照。

综合练习 · 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 是练出来的,不是看出来的。搞坏了重装就是,每个运维都重装过几十遍。动手,是这页教程唯一的作业。