入门 Linux 的 30天自学计划



背景
有朋友碰到了 Linux 难以入门的问题,虽然我会,但是并不表示会教,于是和 AI 切磋了一下,让 AI 设计一个 30 天 为期 4 周的业余时间自学计划。
PS: 虽然叫做正文,但也只个大纲,把所有内容都写完整了,可不是一篇小小博客能 cover 得住的。
正文
我: 你是一个富有经验的成功的自学专家,如何帮助一个零基础的 Linux 学习者,在 4 周的业余时间内,掌握基础的 Linux 技能,从而胜任初级的 IT 运维工作?
AI: bala bala bala ...
我:调整一下细节,以 redhat linux 为教学和练习平台,因此所有的命令也以该平台为主。命令的选取重在实用、常用、高频。包管理需要包含 rpm 命令。
好的,作为一名富有经验的自学专家,我将为你量身定制一个以 Red Hat Enterprise Linux (RHEL) 及其衍生版(如 CentOS Stream, Rocky Linux, AlmaLinux)为主要教学和练习平台的四周学习计划。我们将聚焦于实用、常用、高频的命令,并特别加入 rpm 命令的学习。
核心学习理念:
- Red Hat 生态圈: 熟悉基于 RHEL 的系统特性、工具和最佳实践。
- 实践驱动: 理论结合大量实际操作,通过动手理解概念。
- 小步快跑: 每天投入固定时间,循序渐进,持之以恒。
- 详细笔记: 记录命令、配置、遇到的问题和解决方案,构建你的知识库。
- 善用文档: man命令是你的第一参考,Red Hat 官方文档和社区资源是宝藏。
- 大胆尝试: 在虚拟机中勇敢犯错,每次解决问题都是一次进步。
- 理解而非死记: 掌握命令背后的原理和逻辑,举一反三。
准备工作(第 0 周):
- 硬件要求: 一台电脑(Windows/macOS 均可)。
- 软件安装:
- 安装虚拟机软件:推荐 VirtualBox 或 VMware Workstation Player (免费版)。
- 下载一个主流的 RHEL 系 Linux 发行版 ISO 镜像:强烈推荐 Rocky Linux 或 AlmaLinux (它们是 RHEL 的免费且社区支持的替代品,与 RHEL 100% 二进制兼容),或 CentOS Stream (RHEL 的上游开发版)。选择服务器版(Server/Minimal Install),因为初级运维主要面对命令行环境。
- 在虚拟机中安装 Linux 系统。务必学会如何创建虚拟机、安装操作系统、配置网络(NAT 模式即可),并了解快照功能(在每次进行重大更改前创建快照,方便回滚)。
- 重要: 确保虚拟机能访问互联网。
 
四周学习计划:
第一周:Linux 世界初探与基本操作(建立你的操作舒适区)
目标: 理解 Linux 哲学,熟悉命令行界面,掌握基本文件和目录管理。
- 第 1 天:Linux 初识与虚拟机操作
- 了解 Linux 是什么,理解开源、发行版(尤其是 RHEL 系),以及 Shell (Bash) 和终端的概念。
- 掌握虚拟机的基本操作:启动、关机、快照、网络模式(重点是 NAT 模式,确保能联网)。
- 学会打开终端(或通过 SSH 远程连接,如果可以),执行你的第一个命令:echo "Hello, Rocky Linux!"。
- 学习退出终端:exit。
 
- 第 2 天:文件系统基础与导航
- 理解 Linux 文件系统层次结构 (FHS),如 /,/home,/etc,/var,/opt,/tmp等目录的作用及其在服务器环境中的重要性。
- 常用命令:pwd(显示当前路径),ls(列出目录内容,常用参数ls -l,ls -a,ls -F),cd(切换目录),.(当前目录),..(上级目录),~(用户主目录),-(上一个目录)。
- 学会使用 tab键进行命令补全,提高效率。
- 核心: man命令:学会如何查看命令的帮助文档,如man ls。
 
- 理解 Linux 文件系统层次结构 (FHS),如 
- 第 3 天:文件与目录管理
- 创建目录:mkdir dir1 dir2。
- 删除目录:rmdir(空目录),rm -r(非空目录,慎用!)。
- 创建文件:touch file1.txt。
- 复制文件/目录:cp source_file destination_file,cp -r source_dir destination_dir。
- 移动/重命名文件:mv old_name new_name。
- 删除文件:rm file1.txt。
- 重要参数:-i(交互式确认),-f(强制),-v(显示过程)。
- 文本编辑器初步: 学习 vi或vim的基本操作(进入插入模式i,保存退出:wq,不保存退出:q!)。这是服务器运维的必备技能。
 
- 创建目录:
- 第 4 天:查看文件内容与文本处理初步
- 查看文件内容:cat file.txt(全部显示),less file.txt(分页显示,可搜索),more file.txt(分页显示),head -n 5 file.txt(查看文件开头几行),tail -n 5 file.txt(查看文件末尾几行)。
- 理解 >(重定向输出),>>(追加输出),<(重定向输入) 的概念和用法。
- 理解管道 |的概念,尝试ls -l | less。
 
- 查看文件内容:
- 第 5 天:用户、组与权限基础
- 理解用户和组的概念,root用户(管理员),普通用户。
- 查看当前用户:whoami,id。
- 切换用户:su - username(完全切换),su username(部分切换)。
- 重要: sudo命令:以管理员权限执行命令(sudo command)。
- 理解 Linux 文件权限 (rwx),使用 ls -l查看权限。
- 修改文件权限:chmod 755 file.sh(数字表示法),chmod u+x file.sh(符号表示法)。
- 修改文件所有者/所属组:chown user:group file.txt,chgrp group file.txt。
 
- 理解用户和组的概念,
- 第 6-7 天:复习与实践项目
- 复习本周所有命令,确保能熟练操作。
- 项目: 在你的主目录下,创建一个名为 my_project的目录,并在其中创建子目录data,scripts,logs。在data目录下创建几个文本文件并写入内容。在scripts目录下创建一个空脚本文件并赋予执行权限。尝试移动、复制、删除这些文件和目录。使用ls -l和chmod练习权限管理。
 
第二周:用户、权限、高级文本处理与软件包管理(精细化控制)
目标: 深入理解权限,掌握用户和组的管理,提升文本处理能力,学会软件的安装与卸载(尤其是 dnf 和 rpm)。
- 第 1 天:深入文件权限与特殊权限(初步了解)
- chmod命令的更多高级用法。
- 初步了解 SUID, SGID, Sticky Bit 的概念(知道有这些东西,其作用和潜在安全风险)。
 
- 第 2 天:用户与组管理进阶
- 创建用户:useradd username(常用参数-m创建家目录,-g指定主组,-G指定附加组,-s指定 Shell)。
- 修改用户:usermod -aG groupname username(添加用户到附加组)。
- 删除用户:userdel -r username(删除用户及家目录)。
- 修改用户密码:passwd username。
- 创建组:groupadd groupname。
- 删除组:groupdel groupname。
- 查看用户和组信息文件:/etc/passwd,/etc/shadow,/etc/group。
 
- 创建用户:
- 第 3 天:强大的文本搜索工具
- grep:按模式搜索文件内容。学习常用参数:- -i(忽略大小写),- -n(显示行号),- -v(反向匹配),- -r(递归搜索),- --color。
- find:在文件系统中搜索文件。学习按名称 (- -name), 类型 (- -type), 大小 (- -size), 时间 (- -mtime) 等搜索。
 
- 第 4 天:正则表达式与高级文本处理
- 了解正则表达式的基础知识(^,$,.,*,+,?,[],|等)。
- sed:流编辑器,用于对文本进行替换、删除、插入等操作。学习基本的替换命令- s/old/new/g。
- awk:文本报告生成器,用于按列处理文本。学习简单的- print $1(打印第一列) 等命令。
 
- 了解正则表达式的基础知识(
- 第 5 天:软件包管理 (DNF & RPM)
- 了解 RHEL 系包管理器: dnf(下一代包管理器,推荐使用),yum(传统包管理器,逐渐被dnf取代,但仍兼容)。
- dnf常用命令:- sudo dnf update(更新所有软件包,重要且常用)。
- sudo dnf install package_name(安装软件)。
- sudo dnf remove package_name(卸载软件)。
- sudo dnf search keyword(搜索软件)。
- sudo dnf info package_name(查看软件包信息)。
- sudo dnf provides /path/to/command(查找提供某个文件的软件包)。
 
- rpm常用命令 (低级别包管理):- rpm -ivh package.rpm(安装本地 rpm 包)。
- rpm -Uvh package.rpm(升级本地 rpm 包)。
- rpm -e package_name(卸载已安装的 rpm 包)。
- rpm -qa(查询所有已安装的 rpm 包)。
- rpm -ql package_name(查询 rpm 包安装的文件列表)。
- rpm -qi package_name(查询 rpm 包的详细信息)。
 
 
- 了解 RHEL 系包管理器: 
- 第 6-7 天:复习与实践项目
- 复习本周知识点。
- 项目:
- 创建一个新用户 devops_user,设置密码,并将其添加到wheel组(以便使用sudo)。
- 使用 dnf search httpd搜索 Apache Web 服务器软件包,然后使用sudo dnf install httpd安装它。安装完成后,尝试使用rpm -ql httpd查看其安装了哪些文件,并使用rpm -qi httpd查看其信息。然后使用sudo dnf remove httpd卸载它。
- 在一个包含大量日志文件的目录下,使用 grep和find查找包含特定错误信息的文件。
- 使用 sed批量修改某个配置文件中的特定行(例如,尝试修改/etc/selinux/config中的SELINUX=行,但不要立即生效,只做文本修改练习)。
 
- 创建一个新用户 
 
第三周:网络、进程管理与系统服务(运维核心)
目标: 理解网络基础,掌握进程和服务管理,为远程运维打下基础。
- 第 1 天:网络配置与诊断
- 查看网络接口信息:ip addr(推荐,比ifconfig更新更强大),ip link,ip route。
- 测试网络连通性:ping host_name_or_ip。
- 查看网络连接:ss -tulnp(推荐,比netstat更快更高效),netstat -tulnp(传统)。
- 了解 /etc/hosts文件(本地 DNS 解析)。
- 初步了解 NetworkManager 服务(RHEL 系默认网络管理工具)和 /etc/sysconfig/network-scripts/目录。
 
- 查看网络接口信息:
- 第 2 天:SSH 远程连接与文件传输
- 理解 SSH (Secure Shell) 的概念和作用,它是远程管理 Linux 服务器的基石。
- 使用 ssh user@ip_address命令远程连接服务器(确保虚拟机已安装并启动 SSH 服务:sudo dnf install openssh-server并sudo systemctl start sshd)。
- 使用 scp source_file user@ip:destination_path命令进行文件传输。
- 了解 SSH 密钥对登录(更安全更便捷的登录方式)。
 
- 第 3 天:进程管理
- 查看进程:ps aux(显示所有用户的进程),ps -ef(显示详细信息),top(实时监控进程和系统资源),htop(更友好的top替代,需要安装sudo dnf install htop)。
- 杀死进程:kill PID(发送信号),killall process_name(按名称杀死所有进程)。
- 理解进程信号(SIGTERM, SIGKILL)。
- 理解前台进程与后台进程:&(后台运行),jobs(查看后台任务),fg(将后台任务调到前台),bg(将前台停止的任务调到后台)。
- nohup command &(即使退出终端也能继续运行)。
 
- 查看进程:
- 第 4 天:服务管理 (Systemd)
- 理解系统服务与 systemd(RHEL 系的标准初始化系统)。
- 常用 systemctl命令:- systemctl start service_name(启动服务)。
- systemctl stop service_name(停止服务)。
- systemctl restart service_name(重启服务)。
- systemctl status service_name(查看服务状态,最常用)。
- systemctl enable service_name(设置服务开机自启)。
- systemctl disable service_name(禁用服务开机自启)。
- systemctl is-enabled service_name(检查服务是否开机自启)。
- systemctl list-units --type=service(列出所有服务)。
 
- 查看系统日志:journalctl -u service_name(查看特定服务日志),journalctl -f(实时查看最新日志)。
 
- 理解系统服务与 
- 第 5 天:磁盘管理与文件系统
- 查看磁盘空间:df -h(human-readable)。
- 查看目录大小:du -sh dir_name(human-readable)。
- 了解 mount(挂载) 和umount(卸载) 的概念。
- 了解 /etc/fstab文件(系统启动时自动挂载的文件系统配置)。
- 了解分区工具:lsblk(列出块设备),fdisk(分区工具,谨慎使用! 了解即可,实际操作在虚拟机中)。
 
- 查看磁盘空间:
- 第 6-7 天:复习与实践项目
- 复习本周知识点。
- 项目:
- 在虚拟机中配置一个静态 IP 地址(如果使用 NetworkManager,尝试 nmcli命令)。
- 尝试使用 ssh从本机连接到虚拟机,并使用scp传输文件。
- 启动一个需要长时间运行的命令(例如 while true; do echo "running..."; sleep 1; done),将其放入后台运行,然后尝试用kill命令杀死它。
- 安装 nginx或httpd(Apache) 服务,使用systemctl启动、停止、重启它,并设置开机自启。查看其状态和日志。尝试通过浏览器访问虚拟机 IP 地址(如果虚拟机有桌面环境且防火墙允许)。
 
- 在虚拟机中配置一个静态 IP 地址(如果使用 NetworkManager,尝试 
 
第四周:自动化、定时任务与故障排查(走向运维)
目标: 掌握 Shell 脚本基础,学会定时任务,了解基本的故障排查思路,为初级运维工作做好准备。
- 第 1 天:Shell 脚本入门
- 了解 Shell 脚本的作用和执行方式 (#!/bin/bash作为 Shebang)。
- 编写你的第一个脚本:打印 "Hello, Shell Script!"。
- 变量定义和使用 (name="Linux"), 变量引用 ($name,${name})。
- 输入输出:read -p "Enter your name: " name,echo "Hello, $name"。
- 脚本执行权限:chmod +x script.sh。
 
- 了解 Shell 脚本的作用和执行方式 (
- 第 2 天:Shell 脚本:条件判断与循环
- if-else条件判断 (- [ ]或- [[ ]],常用- -f文件存在,- -d目录存在,- -z字符串为空,- -n字符串非空,- -eq等于)。
- for循环 (- for i in {1..5}; do echo $i; done,- for file in *; do echo $file; done)。
- while循环。
- 尝试编写一个简单的脚本,根据用户输入判断文件是否存在,或者批量重命名文件。
 
- 第 3 天:定时任务 Cron
- 理解 cron服务和crontab命令的作用,用于定期执行任务。
- 学习 crontab -e(编辑当前用户定时任务) 和crontab -l(列出定时任务)。
- 掌握 crontab的时间格式(分 时 日 月 周)。
- 尝试创建一个每天定时备份日志文件的脚本,并用 crontab执行(将输出重定向到文件以检查执行结果)。
 
- 理解 
- 第 4 天:日志管理与系统监控初步
- 了解 /var/log目录下的各种日志文件(如messages,secure,maillog等)。
- 使用 tail -f /var/log/messages实时查看日志。
- 了解 logrotate(日志轮转) 的作用和配置 (/etc/logrotate.conf,/etc/logrotate.d/)。
- 简单了解常用系统监控命令:uptime(系统运行时间),free -h(内存使用),top/htop(CPU/内存/进程),df -h(磁盘空间)。
 
- 了解 
- 第 5 天:基本故障排查思路与 firewalld- 排查思路:
- 看日志: 这是第一步!journalctl或直接查看/var/log。
- 检查服务状态: systemctl status service_name。
- 检查网络连通性: ping,ss -tulnp。
- 检查磁盘空间: df -h。
- 检查进程是否运行: ps aux | grep process_name。
- 检查文件权限: ls -l。
- 防火墙: RHEL 系默认使用 firewalld。- sudo systemctl status firewalld
- sudo firewall-cmd --list-all(查看防火墙规则)
- sudo firewall-cmd --add-service=http --permanent(添加服务,谨慎操作!)
- sudo firewall-cmd --reload(重新加载规则)
 
 
- 看日志: 这是第一步!
- 模拟一些简单故障(如停止 SSH 服务,再尝试登录;防火墙阻止某个端口,再尝试访问)。
 
- 排查思路:
- 第 6-7 天:综合实战与查漏补缺
- 项目:
- 编写一个 Shell 脚本:
- 接收一个参数,作为服务名称。
- 检查该服务的运行状态(systemctl is-active service_name)。
- 如果服务停止,则尝试启动它,并记录到日志文件。
- 如果服务正在运行,则输出“服务正在运行”。
- 将此脚本添加到 crontab,每隔 5 分钟检查一次(你可以故意停止某个服务来测试)。
 
- 模拟一个“磁盘空间不足”的场景(例如,使用 dd if=/dev/zero of=testfile bs=1M count=1024创建大文件),然后尝试使用df -h找到它并清理。
- 回顾所有知识点,针对薄弱环节进行强化练习。
- 阅读一些初级 IT 运维岗位的招聘要求,对比自己掌握的技能,找出差距。
 
- 编写一个 Shell 脚本:
 
- 项目:
学习资源推荐:
- 书籍:
- 《鸟哥的 Linux 私房菜》(内容全面,但篇幅较长,侧重原理,可以作为参考书)
- 《Linux 命令行与 Shell 脚本编程大全》(实战性强,对命令行和脚本有深入讲解)
 
- 在线教程:
- Red Hat 官方文档 (尤其是 RHEL 系统管理员指南)
- FreeCodeCamp, Linux Journey 等网站的 Linux 教程
- YouTube 上的 RHEL/CentOS 教学视频
 
- 文档:
- man命令: 这是你最好的朋友!例如- man dnf、- man systemctl。
- Google/百度:遇到任何问题,直接搜索错误信息或命令用法。
 
- 社区:
- Red Hat/CentOS/Rocky Linux 官方论坛/邮件列表
- Stack Overflow (搜索 Linux 相关问题)
- 国内各大技术论坛和社区的 Linux 版块
 
给自学者的额外建议:
- 保持好奇心: 对遇到的每一个命令、每一个现象都问“为什么”,并尝试深入理解。
- 动手!动手!动手!: 理论知识必须通过大量实践来巩固。
- 循序渐进: 不要贪多嚼不烂,扎实掌握每一步。
- 学会提问: 当你实在无法解决问题时,学会清晰地描述问题、提供相关信息,以便他人帮助。
- 加入社群: 参与 Linux 学习群或论坛,与他人交流,互相学习。
- 持续学习: IT 技术日新月异,掌握基础后,要不断学习新的工具和技术,如 Docker, Ansible 等。
这个计划非常紧凑,需要你投入大量的业余时间(建议每天 2-3 小时,周末更多)。但只要你严格按照计划执行,并保持高度的实践热情,四周后你将对 RHEL 系 Linux 有一个扎实的基础,足以应对初级 IT 运维岗位的挑战!祝你学习顺利!