从零开始学习 Linux:从第一条命令到服务器管理的学习计划
从零学习 Linux 最好分层进行:先学终端和文件系统,然后是用户与权限、Bash 脚本、软件包、进程与 systemd,最后是磁盘、日志、网络、SSH 和服务器安全。每个阶段都要在自己的虚拟机或低价 VPS 上动手练习,最终目标是独立搭建并加固一台运行服务的服务器。
从零学习 Linux 其实比想象中简单,只要顺序正确,并且立刻动手练习。新手最常犯的错误是只看不敲命令,或者在不理解进程和权限的情况下直接学习 Docker 和 Kubernetes。下面是一份九个阶段的计划:每个阶段学什么、练什么,以及怎样判断自己已经掌握。
按时间估算,每天学习一小时大约需要两到四个月,但每个人的节奏不同。比速度更重要的是:完成每个阶段后,你能亲手做出点什么。
阶段 0. 准备实验环境
学 Linux 最好直接在 Linux 中进行。从简单到接近真实的选择有:
- Windows 上的 WSL2:几分钟就能得到一个 Ubuntu 终端。适合练习命令和脚本,但 systemd 和网络的行为与真实服务器不完全相同。
- 虚拟机(VirtualBox、VMware,Mac 上的 UTM)安装 Ubuntu Server 或 Debian。可以随意破坏,并随时恢复快照。
- 低价 VPS:云服务商提供的真实服务器,带有公网 IP,是练习网络和安全的最佳场所。
入门推荐 Ubuntu Server 或 Debian:它们的文档和问答最多。图形界面不是必需的:服务器通过终端管理,从第一天起就应该习惯它。
阶段 1. 终端与文件系统
目标:熟练地在系统中移动,并且不用鼠标处理文件。
- 导航:
pwd、ls -la、cd,绝对路径与相对路径,~、.和..。 - 文件:
cp、mv、rm、mkdir -p、touch,以及用cat、less、head、tail -f查看内容。 - 搜索:
find、which、locate。 - 帮助:
man和--help。学会读 man 手册是一项终身受益的技能。 - 目录结构:
/etc、/var/log、/home、/usr、/proc、/dev中分别有什么;什么是挂载和 inode。 - 终端编辑器:开始时使用
nano,之后学习vim的基本命令,因为几乎每台服务器上都有它。
练习:找出 /etc 中最近一周内修改过的所有 .conf 文件(find /etc -name "*.conf" -mtime -7)。打开 /etc/os-release,确认系统版本。查看 /var/log 中系统记录了什么。
阶段 2. 用户、组和权限
权限是 Linux 安全的基础,也是一半“Permission denied”错误的来源。
- 读懂
ls -l的输出:类型、权限、所有者、所属组。 - 符号和数字形式的
chmod,chown,umask。 - 特殊位:SUID、SGID、sticky bit,以及为什么
/tmp对所有人可写,但别人的文件无法删除。 - 用户和组:
useradd、usermod -aG、passwd,文件/etc/passwd、/etc/shadow、/etc/group。 sudo、sudoers 中的规则,以及用visudo编辑。
练习:创建两个用户和一个共享的项目目录,使两人都能创建文件,而其他人什么都看不到。提示:使用一个组、chmod 2770,以及用于继承组的 SGID。
阶段 3. Bash 与文本工具
管理服务器很大程度上是在处理文本:日志、配置、命令输出。在这一阶段,终端会从一组命令变成真正的工具。
- 重定向和管道:
>、>>、2>&1、|、xargs。 - 过滤工具:
grep(配合正则表达式)、sort、uniq -c、wc、cut、sed、awk。 - 在命令行中使用 JSON 和 HTTP:
curl和jq。 - 脚本:shebang、变量、引号、条件
if和[[ ]]、循环、函数、退出码、set -euo pipefail。
练习:用一行命令统计 Web 服务器日志中请求次数最多的十个 IP 地址:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
然后编写一个备份脚本:将目录打包成文件名带日期的归档,删除七天前的归档,并在出错时返回非零退出码。
阶段 4. 软件包、环境与计划任务
- 包管理器:
apt update、apt install、apt remove、apt search、dpkg -l。在 RHEL 系列系统中使用dnf。理解什么是软件源,以及签名密钥的作用。 - 环境变量:
env、export、PATH,文件~/.bashrc、~/.profile、/etc/environment,以及每个文件何时被读取。 - 计划任务:
crontab -e,五字段的语法,以及为什么在终端能运行的命令放进 cron 里会“不工作”(环境和PATH不同)。
练习:从软件源安装 nginx,把你的脚本目录加入 PATH,并用 cron 设置阶段 3 的备份脚本每晚运行,同时把输出写入日志。
阶段 5. 进程与 systemd
在这一阶段,你开始真正理解系统内部正在发生什么。
- 进程:
ps aux、top/htop、PID 与 PPID、进程状态、优先级(nice)、信号与kill。 - 负载:平均负载(load average)、内存和 swap(
free -h),以及“处于 D 状态的进程”是什么意思。 - 调试:
lsof查看进程打开了哪些文件和端口;strace查看进程进行了哪些系统调用,以及它卡在哪里。 - systemd:单元、
systemctl status/start/enable,编写带有Restart=on-failure的自定义 unit 文件,用定时器代替 cron。 - 日志:
journalctl -u、-f、-b、-p err,日志轮转,rsyslog;使用 sysstat(sar、iostat)查看性能统计。
练习:把一个小应用(至少是 python3 -m http.server)配置为由独立用户运行的 systemd 服务,用 kill -9 结束进程,确认 systemd 已将其重新拉起,并在日志中找到重启的记录。
阶段 6. 磁盘、LVM 与 RAID
- 设备和分区:
lsblk、blkid、fdisk或parted,文件系统 ext4 和 XFS,mkfs。 - 挂载:
mount,使用 UUID 的/etc/fstab,用mount -a检查。 - 空间:
df -h、df -i、du -sh,查找占用磁盘的内容。 - LVM:物理卷、卷组、逻辑卷,以及在不停机的情况下扩展分区。
- 使用
mdadm的软件 RAID:理解 0、1、5、10 级,以及 RAID 不等于备份。
练习:在虚拟机中添加两块磁盘,用它们创建 LVM,建立一个逻辑卷,通过 fstab 挂载,然后用 lvextend -r 扩大它。
阶段 7. 网络
- 足以用于诊断的 TCP/IP 知识:IP、子网掩码、网关、端口、TCP 与 UDP。
- 命令:
ip a、ip r、ss -tlnp、ping、traceroute/mtr、curl -v、nc。 - DNS:解析的工作方式,
/etc/hosts、/etc/resolv.conf、dig、resolvectl。 - 在你的发行版中配置网络(Ubuntu 使用 netplan,其他发行版常用 NetworkManager)。
- 抓取流量:当其他方法都不奏效时使用
tcpdump。
练习:查明服务器上每个开放端口分别由哪个进程监听。分析为什么只监听 127.0.0.1 的服务无法从外部访问,并把它修好。
阶段 8. 远程工作:SSH 与文件传输
- SSH:密钥(
ssh-keygen -t ed25519、ssh-copy-id),文件~/.ssh/config,ssh-agent,端口转发(ssh -L),通过ProxyJump连接堡垒机。 - 复制:
scp与rsync -avz --delete,以及 rsync 在同步方面的优势。 - 网络文件系统:Linux 服务器之间的 NFS,与 Windows 交换文件的 SMB(Samba)。
练习:把 VPS 配置为只能通过密钥登录,在 ~/.ssh/config 中为它设置一个简短的名称,并通过 rsync 每天把一个目录同步到服务器上。
阶段 9. 服务器安全
- 防火墙:“默认拒绝,只允许明确放行的流量”原则,简单场景用
ufw,想了解底层原理则学习nftables。 fail2ban:多次登录失败后封禁 IP,用fail2ban-client status sshd查看。- sshd 设置:禁止密码登录和 root 登录。
- 安全更新及其自动安装(Debian 和 Ubuntu 中的 unattended-upgrades)。
- GPG:验证软件包和文件的签名,加密备份。
练习:防火墙中只开放 22、80 和 443 端口,启用 fail2ban,一天之后查看其状态,看看已经封禁了多少个地址。
综合项目:从头搭建一台完整的服务器
检验是否真正学会 Linux 的最好方式,是不借助提示,从零搭建一台服务器:
- 全新的 VPS,拥有一个带 sudo 的普通用户,通过 SSH 密钥登录,禁用密码和 root 登录。
- 防火墙和 fail2ban,自动安装安全更新。
- Web 服务器和应用,以带自动重启的 systemd 服务运行。
- 用于数据的独立磁盘或逻辑卷,通过 fstab 挂载。
- 按计划(cron 或 systemd 定时器)通过 rsync 把备份传输到另一台机器,并记录日志,还要验证恢复。
- 简短的操作说明:如何从头重新搭建这一切。
如果你能完成这份清单,并且能解释每一步,那么你就具备了从事系统管理或 DevOps 工作的基础。接下来可以学习容器、配置自动化和监控。
如何更有效地学习
- 亲手输入命令。复制粘贴不容易记住,而敲命令和犯错则会留下印象。
- 破坏并修复。在虚拟机中弄坏 fstab 或
~/.ssh的权限,然后把系统修好。这种经验在面试中很受重视。 - 做笔记。带有示例的个人命令笔记,比任何别人的速查表都更有用。
- 阅读日志。几乎所有 Linux 问题都能从日志中找到答案,养成先看日志的习惯。
总结
从零学习 Linux 的方法,就是分层前进:终端与文件、权限、Bash、软件包、进程与 systemd、磁盘、网络、SSH、安全。每个阶段都要在自己的环境中解决一个实际问题。最终目标是独立搭建并加固一台运行服务的服务器。正是按照这条路线,从第一讲到综合项目,平台的 Linux 课程才得以构建。
常见问题
学会 Linux 从零开始需要多长时间?
如果每天学习约一小时,通常需要几个月才能掌握日常服务器操作的基础。自信来自于在实际任务中练习,因此规律性比总时长更重要。
学习 Linux 需要先会编程吗?
不需要,可以从零开始。但到了 Bash 脚本阶段,你实际上已经开始编程了,这些技能之后会在自动化中用到。
能在 Windows 上学习 Linux 吗?
可以,通过 WSL2 或虚拟机。对于 systemd、磁盘和网络等主题,最好使用完整的虚拟机或 VPS。
是否应该把 Linux 设为电脑的主系统?
这样有帮助,但不是必需的。做系统管理时,更重要的是通过终端操作服务器版 Linux,而不是使用图形桌面。
新手应该选择哪个发行版?
Ubuntu Server 或 Debian:文档丰富,技能也容易迁移到其他发行版。RHEL 系列的主要区别是使用 dnf 包管理器。
课程“Linux: с нуля до уверенного администрирования”结合实践详细讲解了这一主题。
- Linux: с нуля до уверенного администрирования
- Финал: собираем защищённый и автоматизированный сервер целиком