Linux 学习体系(Ubuntu/CentOS 通用)
本体系按 **「入门基础→进阶管理→高级运维 / 开发→实战落地」** 四阶段搭建,兼顾实用性 和系统性 ,以 Ubuntu/Debian(apt 包管理)为主,同时兼容 CentOS/RHEL(dnf/yum 包管理),覆盖 Linux 日常使用、服务器运维、开发环境搭建核心能力,每个阶段配核心知识点 + 实操指令 + 应用场景,零基础可循序渐进,有基础可针对性进阶。
核心学习原则
- 命令行优先:Linux 的核心能力在命令行,桌面环境仅作辅助,多敲多练是关键;
- 场景驱动:所有知识点结合实际场景(如文件传输、权限管理、服务部署),避免死记硬背;
- 实操验证:每学一个指令 / 配置,立刻在虚拟机 / 云服务器上测试,强化记忆;
- 举一反三 :Linux 指令参数高度通用(如
-r递归、-v详细、-h人性化),掌握规律可快速拓展。
前置准备:搭建 Linux 学习环境
学习前先搭建可实操的环境,推荐 3 种方式(按新手友好度排序),无需硬件重装系统,低成本入门:
1. 云服务器(首选,贴近生产环境)
- 平台:阿里云 / 腾讯云 / 华为云,新人可领轻量应用服务器(Ubuntu 22.04/CentOS 7/8),月费极低;
- 优势:公网 IP,可练习远程连接(SSH)、端口开放、网络配置,完全模拟真实服务器环境;
- 操作:购买后获取公网 IP、用户名(root/ubuntu)、密码,本地用 Xshell/Finalshell/ 终端 SSH 连接。
2. 虚拟机(本地练习,无网络限制)
- 工具:VirtualBox(免费)/VMware Workstation(付费,功能更全);
- 步骤:下载 Linux 镜像(Ubuntu 22.04 LTS/ CentOS 9)→ 新建虚拟机→ 分配内存(≥2G)、磁盘(≥20G)→ 安装系统;
- 优势:本地操作,可随意折腾(重启、重装、改配置),不怕搞坏系统。
3. WSL2(Windows 用户专属,无缝衔接)
- 简介:Windows 子系统 Linux,直接在 Windows 中运行 Linux 命令行,无需虚拟机;
- 安装:Windows 设置→ 应用→ 可选功能→ 安装「适用于 Linux 的 Windows 子系统」,然后在微软商店下载 Ubuntu;
- 优势:与 Windows 共享文件,无需手动挂载,适合快速敲命令练手。
环境配置要求 :无论哪种方式,确保系统能联网 (用于安装软件)、开启 SSH(用于远程操作,云服务器默认开启,虚拟机 / WSL 需手动开启)。
第一阶段:Linux 入门基础
核心目标 :熟悉 Linux 系统架构,掌握终端操作、文件管理、基础命令,能独立完成文件的增删改查、系统信息查看,理解 Linux「一切皆文件」的核心思想。
1.1 系统初识:Linux 核心特性与目录结构
(1)Linux 与 Windows 核心区别
表格
| 特性 | Linux | Windows |
|---|---|---|
| 系统架构 | 多用户、多任务、开源 | 单用户为主(多用户弱)、闭源 |
| 文件系统 | 树形目录,无盘符(C:/D:/) | 盘符划分(C 盘、D 盘) |
| 操作方式 | 命令行优先,桌面环境为辅助 | 图形界面优先,命令行为辅助 |
| 权限管理 | 精细化用户 / 组 / 其他权限控制 | 简单的管理员 / 普通用户权限 |
| 软件安装 | 包管理器(apt/dnf/yum)安装 | 双击 exe/msi 安装,易有注册表残留 |
(2)Linux 标准目录结构(FHS 规范)
Linux 所有文件都在根目录/ 下,核心目录各司其职,必须记熟(重点标★),避免路径混乱:
plaintext
/ # 根目录,所有文件的顶级父目录
├── ★/home # 普通用户主目录,如ubuntu用户的目录是/home/ubuntu
├── ★/root # 超级管理员(root)主目录,普通用户无权限访问
├── ★/etc # 系统所有配置文件目录(如SSH、防火墙、软件配置)
├── ★/usr # 系统软件安装目录(类似Windows的Program Files)
├── ★/var # 动态文件目录(日志、缓存、数据库文件,核心是/var/log)
├── /bin # 普通用户可执行的系统命令(如ls、cd、cp)
├── /sbin # 管理员才能执行的系统命令(如reboot、fdisk、ufw)
├── /dev # 设备文件目录(如硬盘/dev/sda、鼠标/dev/mouse)
├── /tmp # 临时文件目录,系统重启后自动清空
├── /mnt # 临时挂载目录(如挂载U盘、移动硬盘)
├── /opt # 第三方软件安装目录(如手动安装的Docker、Tomcat)
核心原则 :绝对路径 (从/开始,如/home/ubuntu/test.txt)优先使用,避免相对路径混乱;普通用户操作优先在/home目录,禁止随意修改/etc//root目录(易搞坏系统)。
(3)终端基础操作
- 打开终端:Ubuntu 按
Ctrl+Alt+T,CentOS 点击终端图标,远程连接用 SSH; - 命令提示符:
ubuntu@linux:~$(普通用户,结尾$)、root@linux:~#(管理员,结尾#);ubuntu/root:当前用户名;linux:主机名;~:当前所在目录(用户主目录);
- 切换用户:
su 用户名(如su root,切换到 root,需输密码),exit返回原用户; - 清屏:
clear(或Ctrl+L),清空终端内容,保留历史命令; - 历史命令:
history查看所有历史命令,!数字执行指定行命令(如!100),↑/↓翻找历史命令; - 命令补全:Tab 键(最实用),输入命令 / 路径前几个字符,按 Tab 自动补全,按两次显示所有可选;
- 终止命令:
Ctrl+C,强制终止当前运行的命令(如命令卡死、下载中断时)。
1.2 核心基础命令(按功能分类,必背 + 实操)
所有命令均带示例 ,立刻在自己的环境中测试,敲 3 遍以上形成肌肉记忆,参数优先记常用的。
(1)目录操作命令(cd/ls/pwd/mkdir/rmdir)
表格
| 命令 | 功能 | 常用参数 | 实操示例 |
|---|---|---|---|
pwd |
查看当前目录的绝对路径 | 无 | pwd → 输出/home/ubuntu |
cd |
切换目录 | - | cd /etc(到 /etc)、cd ~(回主目录)、cd ..(回上级目录)、cd -(回上一次目录) |
ls |
查看目录下的文件 / 目录 | -l(详细信息)、-h(人性化大小)、-a(显示隐藏文件,Linux 隐藏文件以.开头)、-la(组合,最常用) |
ls(简单查看)、ls -la(详细查看所有文件)、ls -lh /home(人性化查看 /home 目录) |
mkdir |
创建目录 | -p(递归创建多级目录) |
mkdir test(创建单级)、mkdir -p /home/ubuntu/a/b/c(创建多级) |
rmdir |
删除空目录 | 无 | rmdir test(仅删空目录,有文件则报错) |
(2)文件操作命令(touch/cp/mv/rm/cat/more/less/head/tail)
重点 :rm命令慎用 ,尤其是rm -rf /(删除根目录所有文件,系统直接报废),云服务器 / 生产环境禁止直接用 root 执行rm -rf!
表格
| 命令 | 功能 | 常用参数 | 实操示例 |
|---|---|---|---|
touch |
创建空文件 / 更新文件时间戳 | 无 | touch test.txt(创建空文件)、touch a.txt b.txt(批量创建) |
cp |
复制文件 / 目录 | -r(递归复制目录)、-p(保留文件属性) |
cp test.txt /home/(复制文件)、cp -r testdir /home/(复制目录) |
mv |
移动 / 重命名文件 / 目录 | 无 | mv test.txt /tmp/(移动)、mv a.txt b.txt(重命名,同一目录下) |
rm |
删除文件 / 目录 | -r(递归删目录)、-f(强制删除,不提示)、-rf(组合,删目录无提示) |
rm test.txt(删文件,需确认)、rm -rf testdir(强制删目录,无提示) |
cat |
查看文件全部内容 | -n(显示行号) |
cat /etc/hosts(查看小文件)、cat -n test.txt(显示行号) |
more |
分页查看大文件(向下翻) | 无 | more /var/log/syslog(按空格翻页,按 q 退出) |
less |
分页查看大文件(上下翻) | 无 | less /var/log/syslog(按↑/↓翻行,按 q 退出,比 more 更灵活) |
head |
查看文件前 N 行(默认前 10) | -n 数字(指定行数) |
head /etc/passwd(前 10 行)、head -n 5 test.txt(前 5 行) |
tail |
查看文件后 N 行(默认后 10) | -n 数字(指定行数)、-f(实时监控文件,核心!) |
tail /etc/passwd(后 10 行)、tail -f /var/log/syslog(实时监控系统日志,按 Ctrl+C 退出) |
(3)系统信息查看命令(uname/hostname/df/du/w/uptime)
用于快速了解系统状态,排查环境问题时常用:
uname -a:查看系统所有信息(内核版本、主机名、系统架构);uname -r:仅查看 Linux 内核版本(如5.15.0-78-generic);hostname:查看主机名,hostname 新名字临时修改主机名;df -h:查看磁盘使用情况(-h人性化显示大小,重点看剩余空间);du -h 目录/文件:查看文件 / 目录的实际大小(du -h /home查看 /home 目录占用);w:查看当前登录系统的所有用户及操作;uptime:查看系统运行时间(开机多久)、负载平均值(1/5/15 分钟,数值越小越空闲);whoami:查看当前登录的用户名。
(4)软链接创建命令(ln -s)
Linux 的快捷方式 ,核心用于简化文件路径,避免重复复制文件,语法:ln -s 源文件/目录 软链接名
- 示例:
ln -s /home/ubuntu/test.txt /tmp/test_link(在 /tmp 创建 test.txt 的软链接); - 查看:
ls -la会显示软链接指向的源路径(test_link -> /home/ubuntu/test.txt); - 删除:
rm 软链接名(直接删,不要加-r,否则会删源文件); - 注意:源文件绝对路径优先,否则软链接移动后会失效。
1.3 权限基础:Linux 文件 / 目录权限初识
Linux 是多用户系统 ,每个文件 / 目录都有严格的权限控制 ,这是 Linux 安全的核心,入门先理解权限标识 和简单修改。
(1)权限标识解读(ls -la 查看)
执行ls -la test.txt,输出第一列如-rw-r--r--,共 10 位,含义如下:
plaintext
第1位:文件类型 → -(普通文件)、d(目录)、l(软链接)
第2-4位:文件所有者(u)权限 → r(读,4)、w(写,2)、x(执行,1)、-(无权限)
第5-7位:文件所属组(g)权限 → 同上
第8-10位:其他用户(o)权限 → 同上
示例:-rw-r--r-- → 普通文件,所有者有读 + 写 权限,所属组和其他用户只有读权限。
(2)简单权限修改(chmod)
语法:chmod 权限标识 文件/目录,两种方式:数字法(推荐) 、字母法
- 数字法:r=4、w=2、x=1,无权限 = 0,权限值为三者之和(如 rw-=6,r--=4,rwx=7);
- 示例:
chmod 644 test.txt(所有者 6=rw-,所属组 4=r--,其他 4=r--,即 - rw-r--r--); - 示例:
chmod 755 testdir(目录必须加执行权限才能进入,755 是目录默认权限);
- 示例:
- 字母法:u(所有者)、g(所属组)、o(其他)、a(所有),+(加权限)、-(减权限)、=(赋值权限);
- 示例:
chmod u+x test.sh(给所有者加执行权限,脚本文件需要执行权限); - 示例:
chmod a-w test.txt(给所有用户减写权限,禁止任何人修改)。
- 示例:
1.4 软件包基础管理(apt/dnf/yum)
Linux 安装软件无需双击 exe,通过包管理器 一键安装,自动解决依赖,Ubuntu 用apt,CentOS7 用yum,CentOS8 + 用dnf(yum 的升级版)。
(1)Ubuntu/Debian(apt)核心命令
bash
运行
sudo apt update # 刷新软件源(必做,安装软件前先执行)
sudo apt install 软件名 -y # 安装软件,-y表示自动确认(无需手动输y)
# 示例:sudo apt install net-tools -y(安装ifconfig网络工具)
sudo apt remove 软件名 -y # 卸载软件(保留配置文件)
sudo apt purge 软件名 -y # 彻底卸载软件(删除配置文件)
sudo apt upgrade -y # 升级系统所有已安装的软件
apt search 软件名 # 搜索软件源中的软件
注意 :普通用户执行系统级命令(如安装 / 卸载软件)需加sudo(临时获取管理员权限),首次执行需输入用户密码。
(2)CentOS/RHEL(dnf/yum)核心命令
bash
运行
sudo dnf clean all # 清理缓存
sudo dnf makecache # 生成缓存(刷新软件源)
sudo dnf install 软件名 -y # 安装软件
# 示例:sudo dnf install net-tools -y
sudo dnf remove 软件名 -y # 卸载软件
sudo dnf upgrade -y # 升级软件
dnf search 软件名 # 搜索软件
# CentOS7用yum,命令和dnf完全一致:sudo yum install 软件名 -y
第二阶段:Linux 进阶管理
核心目标 :掌握 Linux用户 / 组管理、权限进阶、进程 / 服务管理、网络管理、文本编辑(Vim)、远程传输 ,能独立完成系统日常管理(如创建用户、配置服务、排查网络问题),这是 Linux 运维 / 开发的核心能力层,也是你之前问的「远程传输」所属阶段。
2.1 用户与用户组管理(Linux 多用户核心)
Linux 中所有操作都对应用户 ,用户归属于用户组 ,核心文件:/etc/passwd(用户信息)、/etc/group(组信息)、/etc/shadow(用户密码,加密存储)。
(1)用户组管理(groupadd/groupdel/groupmod)
bash
运行
sudo groupadd 组名 # 创建用户组,示例:sudo groupadd dev
sudo groupdel 组名 # 删除用户组(组内无用户才能删),示例:sudo groupdel dev
sudo groupmod -n 新组名 旧组名 # 修改组名,示例:sudo groupmod -n dev01 dev
cat /etc/group | grep 组名 # 查看组信息,验证是否创建成功
(2)用户管理(useradd/userdel/usermod/passwd)
bash
运行
# 创建用户,-g 指定所属组,-m 自动创建用户主目录(必加)
sudo useradd -g 组名 -m 用户名 # 示例:sudo useradd -g dev -m zhangsan
# 设置用户密码,执行后按提示输入密码(密码不显示,输完回车即可)
sudo passwd 用户名 # 示例:sudo passwd zhangsan
# 删除用户,-r 同时删除用户主目录,示例:sudo userdel -r zhangsan
# 修改用户,-g 改所属组,-d 改主目录,示例:sudo usermod -g dev01 zhangsan
cat /etc/passwd | grep 用户名 # 查看用户信息,验证是否创建成功
(3)sudo 权限配置(普通用户提权)
普通用户默认无系统级操作权限(如安装软件、修改配置),需通过/etc/sudoers文件配置sudo 权限,避免直接用 root 操作(提升安全性)。
bash
运行
sudo visudo # 编辑sudoers文件(必须用这个命令,有语法检查,避免改错)
# 在文件中添加一行:用户名 ALL=(ALL:ALL) ALL (示例:zhangsan ALL=(ALL:ALL) ALL)
# 保存退出(Vim操作,后面讲),之后zhangsan即可用sudo执行管理员命令
2.2 权限进阶:chown/umask/ 特殊权限
(1)修改文件所有者 / 所属组(chown,核心)
语法:sudo chown 用户名:组名 文件/目录,-R递归修改目录下所有文件的权限(必加)
- 示例:
sudo chown zhangsan:dev test.txt(修改 test.txt 的所有者为 zhangsan,所属组为 dev); - 示例:
sudo chown -R zhangsan:dev testdir(递归修改 testdir 目录下所有文件的所有者和组); - 单独修改所有者:
sudo chown 用户名 文件/目录; - 单独修改所属组:
sudo chgrp 组名 文件/目录(或sudo chown :组名 文件/目录)。
(2)默认权限(umask)
Linux 新建文件 / 目录的默认权限 由umask值决定,执行umask查看(默认 0022):
- 新建目录默认权限:
777 - umask→ 0022 则为 755; - 新建文件默认权限:
666 - umask→ 0022 则为 644(文件默认无执行权限,避免恶意脚本); - 临时修改 umask:
umask 0002,永久修改需配置系统文件(入门暂不涉及)。
(3)特殊权限(SUID/SGID/Sticky,了解即可)
用于解决特殊场景的权限问题(如普通用户执行管理员命令、共享目录文件归属),入门阶段只需了解,生产环境按需配置:
- SUID:让普通用户执行文件时拥有所有者的权限 (如
/usr/bin/passwd,普通用户可修改自己的密码); - SGID:让普通用户在目录中创建的文件归属目录的所属组(适合团队共享目录);
- Sticky:粘滞位,仅文件所有者 /root 可删除目录中的文件(如
/tmp目录,防止普通用户删除他人文件)。
2.3 文本编辑神器:Vim 完整使用(Linux 必备)
Vim 是 Linux默认的文本编辑器 ,无图形界面也能高效编辑配置文件 / 脚本,核心是三种模式的切换,入门看似复杂,掌握核心快捷键后效率极高。
(1)Vim 三种核心模式
- 普通模式(命令模式):打开 Vim 默认进入,用于移动光标、删除、复制、粘贴、撤销等;
- 插入模式 :用于输入文本,从普通模式按
i/a/o进入,按Esc返回普通模式; - 命令行模式 :用于保存、退出、查找、替换等,从普通模式按
:进入,执行命令后按Enter返回。
(2)Vim 核心操作(按模式分类,必背快捷键)
① 打开 / 关闭 Vim
bash
运行
vim 文件名 # 打开文件,文件不存在则创建(如vim test.txt)
vim + 文件名 # 打开文件并定位到最后一行
vim +数字 文件名 # 打开文件并定位到指定行(如vim +5 test.txt)
② 普通模式(核心,快捷键最多)
- 光标移动 (不用方向键,用 hjkl,更高效):
h左、j下、k上、l右;gg:定位到文件第一行,G:定位到最后一行,数字G:定位到指定行(如5G到第 5 行);^:定位到行首,$:定位到行尾;
- 删除 / 剪切 :
dd删除当前行,数字dd删除指定行(如3dd删 3 行),x删除光标所在字符; - 复制 :
yy复制当前行,数字yy复制指定行(如2yy复制 2 行); - 粘贴 :
p粘贴到光标下一行,P粘贴到光标上一行; - 撤销 / 恢复 :
u撤销上一步操作,Ctrl+r恢复撤销的操作; - 进入插入模式 :
i(光标前插入,最常用)、a(光标后插入)、o(光标下一行新建行插入)。
③ 插入模式
唯一功能:输入文本 ,和普通记事本一样,按Esc立刻返回普通模式(重中之重,避免一直停在插入模式)。
④ 命令行模式(按:进入,核心命令)
表格
| 命令 | 功能 |
|---|---|
:w |
保存文件(不退出) |
:q |
退出 Vim(未修改文件) |
:wq/:x |
保存并退出(最常用) |
:q! |
强制退出(不保存修改,文件改错时用) |
:set nu |
显示行号(临时,关闭 Vim 后失效) |
:set nonu |
隐藏行号 |
:/关键词 |
向下查找关键词,按n下一个,N上一个 |
:%s/旧内容/新内容/g |
全局替换,将文件中所有旧内容替换为新内容(如:%s/aaa/bbb/g) |
(3)Vim 实操练习(必做)
bash
运行
vim test_vim.txt # 打开Vim,进入普通模式
i # 进入插入模式,输入任意内容(如Linux入门到高级)
Esc # 返回普通模式
:set nu # 显示行号
dd # 删除当前行
u # 撤销删除
:wq # 保存并退出
cat test_vim.txt # 查看文件,验证修改
2.4 进程与服务管理(Linux 后台运行核心)
Linux 中所有运行的程序都是进程 ,长期运行的进程(如 SSH、防火墙)称为服务,核心是掌握「查看进程、终止进程、管理服务」。
(1)进程查看(ps/top/pstree)
ps -ef:查看系统所有进程(最常用),ps -ef | grep 进程名过滤指定进程(如ps -ef | grep ssh查看 SSH 进程);top:实时监控进程(类似 Windows 任务管理器),按q退出,按P按 CPU 排序,按M按内存排序;pstree:以树形结构查看进程,更直观,需先安装:sudo apt install pstree -y。
(2)进程终止(kill/killall/pkill)
用于终止卡死 / 无用的进程,语法:kill 进程ID(PID),PID 可通过ps -ef查看(第二列数字)。
bash
运行
kill 1234 # 终止PID为1234的进程(正常终止)
kill -9 1234 # 强制终止PID为1234的进程(进程卡死时用,-9表示强制)
killall 进程名 # 按进程名终止所有相关进程(如killall sshd)
pkill 进程名 # 按进程名终止进程,和killall类似
(3)服务管理(systemctl,通用,替代旧的 service)
Linux 系统服务由systemd管理,核心命令systemctl,所有服务均在/etc/systemd/system/目录 ,常用服务:sshd(SSH)、ufw(防火墙)、network-manager(网络)。核心语法 :sudo systemctl 操作 服务名,操作包括:
bash
运行
sudo systemctl start 服务名 # 启动服务,示例:sudo systemctl start sshd
sudo systemctl stop 服务名 # 停止服务,示例:sudo systemctl stop sshd
sudo systemctl restart 服务名 # 重启服务(配置修改后必做),示例:sudo systemctl restart sshd
sudo systemctl status 服务名 # 查看服务状态(运行/停止/报错),示例:sudo systemctl status sshd
sudo systemctl enable 服务名 # 设置服务开机自启(核心,服务器重启后服务自动运行)
sudo systemctl disable 服务名 # 关闭服务开机自启
sudo systemctl is-enabled 服务名 # 查看服务是否开机自启
关键 :修改服务配置文件后,必须执行systemctl daemon-reload(重新加载配置),再执行restart才能生效。
2.5 网络管理(含 SSH 高级配置,衔接你的远程传输需求)
掌握 Linux 网络配置、远程连接、防火墙管理,解决「连不上网、远程连接失败、端口不通」等核心问题。
(1)网络信息查看(ip/ifconfig/netstat/ss)
ifconfig:查看网卡信息(IP、子网掩码、MAC),需安装:sudo apt install net-tools -y;ip a:替代 ifconfig 的新命令(推荐),查看网卡 IP,无需额外安装;ping IP/域名:测试网络连通性(如ping baidu.com、ping 192.168.1.1),按Ctrl+C停止;telnet IP 端口:测试远程端口是否开放(如telnet 192.168.1.100 22测试 SSH 端口),需安装:sudo apt install telnet -y;netstat -tulnp:查看系统监听的端口(-tTCP、-uUDP、-l 监听、-n 数字显示、-p 显示进程),示例:netstat -tulnp | grep 22查看 SSH 端口监听状态;ss -tulnp:替代 netstat 的新命令(推荐),功能一致,速度更快。
(2)SSH 高级配置(免密登录、改端口、禁用密码,安全 + 高效)
你之前学的远程传输(SCP/rsync/SFTP)都基于 SSH,配置 SSH 高级功能可提升安全性和效率,核心配置文件:/etc/ssh/sshd_config(注意是 sshd,不是 ssh)。
① 免密登录配置(已讲过,再强化,核心)
bash
运行
# 本地生成SSH密钥(一路回车,无需设置密码)
ssh-keygen -t rsa -b 4096
# 将公钥上传到远程服务器(替换为远程IP和用户名)
ssh-copy-id -p 22 用户名@远程IP
# 示例:ssh-copy-id ubuntu@192.168.1.100
配置后,本地连接远程服务器 / 传输文件无需再输入密码,生产环境必配。
② SSH 安全配置(禁用密码、改默认端口,防止暴力破解)
bash
运行
sudo vim /etc/ssh/sshd_config # 编辑SSH配置文件
# 1. 修改SSH默认端口(22→2222,避免暴力破解)
Port 2222
# 2. 禁用密码登录(仅允许密钥登录,核心安全配置)
PasswordAuthentication no
# 3. 禁用root用户直接登录(防止root密码被破解)
PermitRootLogin no
# 保存退出Vim后,重新加载配置并重启SSH
sudo systemctl daemon-reload
sudo systemctl restart sshd
注意 :改端口后,远程连接 / 传输文件必须指定端口(如ssh -p 2222 用户名@IP、scp -P 2222 文件名 用户名@IP:/路径),且防火墙需开放新端口!
(3)防火墙管理(ufw/firewalld,开放端口 / IP)
Linux 默认开启防火墙,远程连接 / 服务部署时必须开放对应端口,否则会出现「能 ping 通,但端口不通」的问题。
① Ubuntu 防火墙(ufw,简单易用)
bash
运行
sudo ufw status # 查看防火墙状态(inactive关闭,active开启)
sudo ufw enable # 开启防火墙(开机自启)
sudo ufw disable # 关闭防火墙(测试用,生产环境禁止关闭)
sudo ufw allow 端口/协议 # 开放端口,示例:sudo ufw allow 2222/tcp(开放SSH2222端口)
sudo ufw allow 80/tcp # 开放HTTP80端口
sudo ufw deny 端口/协议 # 拒绝访问端口
sudo ufw delete allow 端口 # 删除端口规则,示例:sudo ufw delete allow 22
② CentOS 防火墙(firewalld,比 ufw 复杂)
bash
运行
sudo systemctl status firewalld # 查看状态
sudo systemctl start firewalld # 启动
sudo systemctl enable firewalld # 开机自启
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent # 开放2222端口,--permanent永久生效
sudo firewall-cmd --reload # 重新加载配置(开放端口后必做)
sudo firewall-cmd --zone=public --list-ports # 查看已开放的端口
sudo firewall-cmd --zone=public --remove-port=2222/tcp --permanent # 删除端口规则
2.6 远程文件传输(SCP/rsync/SFTP,你的原需求,进阶强化)
这部分你之前已经学过,这里做场景化整合 ,明确不同工具的选择标准,新增断点续传、批量传输、免密传输的实操:
(1)工具选择标准(刻在心里)
- 单次小文件 / 目录 :SCP(极简,
scp -r -P 端口 源 目标); - 大文件 / 频繁同步 / 增量传输 :rsync(生产环境首选,
rsync -avzP -e 'ssh -p 端口' 源 目标); - 交互式浏览 + 传输 :SFTP(直观,
sftp -P 端口 用户名@IP); - 所有工具:配置 SSH 免密后,无需输入密码,传输效率翻倍。
(2)rsync 断点续传 + 增量同步(最实用的生产场景)
bash
运行
# 远程→本地,下载大文件(断点续传+压缩+进度),指定SSH端口2222
rsync -avzP -e 'ssh -p 2222' ubuntu@192.168.1.100:/home/ubuntu/bigfile.iso /home/
# 本地→远程,增量同步目录(只传变化的文件),删除目标多余文件
rsync -avzP --delete -e 'ssh -p 2222' /home/testdir ubuntu@192.168.1.100:/home/
(3)SFTP 批量传输 + 文件管理(交互式实战)
bash
运行
sftp -P 2222 ubuntu@192.168.1.100 # 连接远程
sftp> lcd /home/ubuntu/local # 切换本地目录
sftp> cd /home/ubuntu/remote # 切换远程目录
sftp> mput *.txt # 批量上传本地所有txt文件
sftp> mget *.log # 批量下载远程所有log文件
sftp> mkdir newdir # 远程创建目录
sftp> exit # 退出
2.7 压缩与解压(tar/zip/gz/bz2/xz,Linux 常用压缩格式)
Linux 中最常用的压缩格式是tar.gz/tar.bz2/tar.xz ,zip 仅用于和 Windows 互传,核心工具是tar(一站式压缩 / 解压,无需单独安装)。
(1)tar 核心命令(万能,必背)
语法:tar 选项 压缩包名 源文件/目录,核心选项:c(创建压缩包)、x(解压)、z(gzip 压缩)、j(bz2 压缩)、J(xz 压缩)、f(指定压缩包名,必须放最后)、v(详细)、h(人性化)、C(指定解压目录)。
bash
运行
# 压缩(tar.gz,最常用,压缩率适中,速度快)
tar -zcvf 压缩包名.tar.gz 源文件/目录 # 示例:tar -zcvf test.tar.gz testdir/
# 压缩(tar.bz2,压缩率更高,速度慢)
tar -jcvf 压缩包名.tar.bz2 源文件/目录
# 压缩(tar.xz,压缩率最高,速度最慢)
tar -Jcvf 压缩包名.tar.xz 源文件/目录
# 解压(tar.gz,默认解压到当前目录)
tar -zxvf 压缩包名.tar.gz
# 解压到指定目录(-C 目录,必须是已存在的目录)
tar -zxvf test.tar.gz -C /home/ubuntu/
# 查看压缩包内容(不解压)
tar -tf test.tar.gz
(2)zip/unzip(与 Windows 互传用)
bash
运行
sudo apt install zip unzip -y # 安装
zip 压缩包名.zip 源文件/目录 # 压缩,示例:zip test.zip test.txt
unzip 压缩包名.zip -d 解压目录 # 解压,-d指定目录,示例:unzip test.zip -d /home/
第三阶段:Linux 高级运维 / 开发
核心目标 :从「会用 Linux」升级为「精通 Linux」,掌握磁盘管理、日志分析、定时任务、Shell 脚本编程、源码编译、容器化入门 ,兼顾运维方向 (服务器管理、性能调优)和开发方向(开发环境搭建、自动化脚本),满足生产环境和开发的高阶需求。
3.1 磁盘管理(分区 / 挂载 /swap/RAID,服务器运维核心)
Linux 磁盘管理是进阶重点,解决「磁盘满了、新增硬盘、扩展分区」等问题,核心概念:分区 、文件系统 、挂载(Linux 所有磁盘必须挂载到目录才能使用)。
(1)磁盘查看(fdisk/lsblk/df/du)
lsblk:查看磁盘和分区信息(直观,推荐),如lsblk显示/dev/sda(硬盘)、/dev/sda1(分区);fdisk -l:查看磁盘详细分区信息,需 root 权限:sudo fdisk -l;df -h:查看磁盘挂载点和使用情况(重点看Mounted on列,挂载目录);du -sh 目录:查看目录实际占用空间,排查磁盘满的原因(如du -sh /var/log查看日志占用)。
(2)磁盘分区与格式化(fdisk/mkfs)
步骤:新增硬盘→ 分区(fdisk)→ 格式化(创建文件系统,mkfs)→ 挂载(mount)→ 永久挂载(fstab)。
bash
运行
# 1. 分区,/dev/sdb为新增硬盘(根据lsblk查看)
sudo fdisk /dev/sdb
# 按提示操作:n(新建分区)→ p(主分区)→ 回车(默认分区号)→ 回车(默认起始扇区)→ 回车(默认结束扇区)→ w(保存分区)
# 2. 格式化分区为ext4(Linux最常用文件系统),/dev/sdb1为新建分区
sudo mkfs.ext4 /dev/sdb1
# 3. 临时挂载,挂载到/mnt/newdisk(目录需先创建)
sudo mkdir /mnt/newdisk
sudo mount /dev/sdb1 /mnt/newdisk
# 4. 永久挂载(重启后不失效),编辑/etc/fstab文件
sudo vim /etc/fstab
# 添加一行:/dev/sdb1 /mnt/newdisk ext4 defaults 0 0
# 验证挂载:sudo mount -a(无报错则成功)
(3)交换分区(swap)扩展
swap 分区是 Linux 的虚拟内存,当物理内存不足时,系统会使用 swap 分区,默认大小较小,需按需扩展:
bash
运行
# 1. 创建swap文件(大小2G,bs=1G,count=2)
sudo fallocate -l 2G /swapfile
# 2. 设置权限(仅root可访问)
sudo chmod 600 /swapfile
# 3. 格式化为swap格式
sudo mkswap /swapfile
# 4. 启用swap
sudo swapon /swapfile
# 5. 永久启用,编辑/etc/fstab,添加:/swapfile none swap sw 0 0
# 查看swap状态:swapon --show 或 free -h
(4)磁盘检测与修复(fsck)
当磁盘异常卸载、系统死机时,文件系统可能损坏,用fsck修复(必须卸载磁盘后再执行,否则会损坏文件):
bash
运行
sudo umount /mnt/newdisk # 卸载磁盘
sudo fsck.ext4 /dev/sdb1 # 修复ext4格式的分区
# 按提示输入y确认修复,修复完成后重新挂载:sudo mount /dev/sdb1 /mnt/newdisk
3.2 日志管理(/var/log/、rsyslog、journalctl,排错核心)
Linux 所有运行日志都存在 **/var/log/** 目录,日志是排查问题的唯一标准(如服务启动失败、远程连接失败、程序报错),核心掌握「日志位置、实时监控、日志过滤、日志轮转」。
(1)核心日志文件(/var/log/,必须记熟)
表格
| 日志文件 | 作用 |
|---|---|
| /var/log/syslog | 系统核心日志(Ubuntu),记录所有系统服务、进程的运行信息 |
| /var/log/messages | 系统核心日志(CentOS),替代 syslog |
| /var/log/auth.log | 认证日志(Ubuntu),记录 SSH 登录、sudo 操作、用户认证信息 |
| /var/log/secure | 认证日志(CentOS),替代 auth.log |
| /var/log/dmesg | 内核日志,记录系统启动、硬件驱动、磁盘相关信息 |
| /var/log/nginx/ | Nginx 服务日志(安装 Nginx 后生成),含 access.log(访问日志)、error.log(错误日志) |
| /var/log/mysql/ | MySQL 服务日志(安装 MySQL 后生成) |
(2)日志查看与过滤(tail/grep/awk,实操)
bash
运行
tail -f /var/log/syslog # 实时监控系统日志(排错最常用)
grep "error" /var/log/syslog # 过滤日志中含"error"的行(查找报错)
grep "sshd" /var/log/auth.log # 过滤SSH登录日志(排查远程连接失败)
grep -i "failed" /var/log/auth.log # -i忽略大小写,查找含"failed"的登录失败记录
awk '{print $1,$2,$3,$9}' /var/log/syslog # 按列过滤,只显示第1/2/3/9列(日志格式化)
(3)systemd 日志(journalctl,替代传统日志)
CentOS7+/Ubuntu16.04 + 默认使用journalctl管理日志,可按服务、时间、优先级过滤,更灵活:
bash
运行
journalctl # 查看所有日志
journalctl -u 服务名 # 查看指定服务的日志(如journalctl -u sshd)
journalctl -u sshd -f # 实时监控指定服务的日志(替代tail -f)
journalctl -u sshd --since "10 minutes ago" # 查看10分钟内的服务日志
journalctl -u sshd --since "2024-01-01 00:00:00" --until "2024-01-01 12:00:00" # 查看指定时间范围的日志
journalctl -p err # 只查看错误级别的日志(p=priority,err/warn/info/debug)
(4)日志轮转(logrotate,防止日志占满磁盘)
Linux 通过logrotate自动切割日志文件,避免单个日志文件过大占满磁盘,核心配置文件:/etc/logrotate.conf(全局配置)、/etc/logrotate.d/(各服务独立配置),默认按大小 / 时间切割,保留指定数量的日志文件,入门阶段只需了解,生产环境按需调整配置。
3.3 定时任务(crontab,Linux 自动化核心)
crontab 是 Linux定时执行命令 / 脚本 的工具,实现「自动化备份、自动化同步、自动化清理日志」,核心是定时任务表达式,入门简单,功能强大。
(1)crontab 核心语法
bash
运行
crontab -e # 编辑当前用户的定时任务(首次执行会选择编辑器,选Vim即可)
crontab -l # 查看当前用户的定时任务
crontab -r # 删除当前用户的所有定时任务(慎用,可通过crontab -e手动删除)
sudo crontab -e # 编辑root用户的定时任务(系统级自动化)
(2)定时任务表达式(5 个 *+ 命令,必背)
编辑 crontab 时,每一行是一个定时任务,格式:
plaintext
* * * * * 要执行的命令/脚本绝对路径
- - - - -
| | | | |
| | | | └─ 星期(0-6,0=周日,1=周一,...6=周六)
| | | └───── 月份(1-12)
| | └───────── 日期(1-31)
| └───────────── 小时(0-23)
└───────────────── 分钟(0-59)
通配符含义:
*:每一个单位(如分钟 * 表示每分钟);,:指定多个值(如小时 1,3 表示 1 点和 3 点);-:指定范围(如小时 9-18 表示 9 点到 18 点);/:步长(如分钟 */5 表示每 5 分钟)。
(3)crontab 实操示例(常用场景,必做)
bash
运行
crontab -e # 编辑定时任务
# 示例1:每5分钟执行一次,清理/tmp目录下7天前的临时文件
*/5 * * * * find /tmp -type f -mtime +7 -delete
# 示例2:每天凌晨2点,用rsync同步远程服务器的日志到本地(脚本绝对路径)
0 2 * * * /home/ubuntu/script/sync_log.sh
# 示例3:每周日凌晨1点,备份/var/log目录到/mnt/backup
0 1 * * 0 tar -zcvf /mnt/backup/log_$(date +%Y%m%d).tar.gz /var/log/
# 示例4:每月1号凌晨3点,删除/mnt/backup下30天前的备份文件
0 3 1 * * find /mnt/backup -type f -mtime +30 -delete
关键注意事项:
- 定时任务中必须使用绝对路径(命令 / 脚本 / 文件),因为 crontab 的环境变量有限,相对路径会失效;
- 脚本执行前先手动测试,确保能正常运行;
- 定时任务的执行日志会写入
/var/log/syslog,可通过grep CRON /var/log/syslog查看执行情况。
3.4 Shell 脚本编程(Linux 自动化进阶,从命令到脚本)
Shell 脚本是将 Linux 命令按逻辑组合成的可执行文件,实现批量操作、自动化运维、一键部署,入门门槛低,无需掌握高级编程语言,会 Linux 命令就能写。
(1)Shell 脚本基础
- 脚本后缀:
.sh(如test.sh); - 脚本首行:
#!/bin/bash(指定脚本解释器为 bash,必须写在第一行); - 执行权限:脚本必须加执行权限(x) 才能运行,
chmod +x test.sh; - 运行方式:
./test.sh(当前目录运行)、/home/ubuntu/test.sh(绝对路径运行)。
(2)Shell 脚本核心语法(入门必学)
① 变量
bash
运行
#!/bin/bash
# 定义变量(等号两边无空格)
name="Linux"
age=100
# 使用变量($变量名 或 ${变量名},推荐${},避免歧义)
echo "Hello, ${name}!"
echo "Age: ${age}"
# 系统变量(预定义,直接使用)
echo "当前目录:${PWD}"
echo "当前用户:${USER}"
# 命令替换(将命令执行结果赋值给变量,$() 或 ``,推荐$())
ip=$(ip a | grep inet | grep eth0 | awk '{print $2}' | cut -d/ -f1)
echo "本机IP:${ip}"
② 条件判断(if-else)
bash
运行
#!/bin/bash
# 判断文件是否存在
if [ -f /home/ubuntu/test.txt ]; then
echo "文件存在"
else
echo "文件不存在,创建文件"
touch /home/ubuntu/test.txt
fi
# 判断磁盘使用率是否超过80%
disk_usage=$(df -h / | grep / | awk '{print $5}' | cut -d% -f1)
if [ ${disk_usage} -gt 80 ]; then
echo "磁盘使用率超过80%,当前使用率:${disk_usage}%"
# 可添加邮件告警、清理文件等操作
fi
③ 循环(for/while)
bash
运行
#!/bin/bash
# for循环,遍历文件
for file in /home/ubuntu/*.txt; do
echo "文件:${file}"
# 对每个txt文件执行操作,如复制到/tmp
cp ${file} /tmp/
done
# while循环,计数从1到10
i=1
while [ ${i} -le 10 ]; do
echo "计数:${i}"
i=$((i+1)) # 变量自增
done
(3)Shell 脚本实战(一键备份脚本,生产可用)
bash
运行
#!/bin/bash
# 脚本名:backup_mysql.sh
# 功能:一键备份MySQL数据库,保留7天备份
# 定义变量
BACKUP_DIR=/mnt/backup/mysql
DATE=$(date +%Y%m%d_%H%M%S)
MYSQL_USER=root
MYSQL_PASS=123456
# 创建备份目录
if [ ! -d ${BACKUP_DIR} ]; then
mkdir -p ${BACKUP_DIR}
fi
# 备份MySQL数据库(mysqldump)
mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} --all-databases | gzip > ${BACKUP_DIR}/mysql_${DATE}.sql.gz
# 删除7天前的备份
find ${BACKUP_DIR} -type f -mtime +7 -delete
# 输出备份信息
echo "备份完成,备份文件:${BACKUP_DIR}/mysql_${DATE}.sql.gz"
# 赋予执行权限:chmod +x backup_mysql.sh
# 定时执行:crontab -e 添加 0 1 * * * /home/ubuntu/backup_mysql.sh
3.5 源码编译安装(./configure/make/make install)
Linux 包管理器(apt/dnf)中的软件版本可能较旧,生产环境 / 开发中常需要源码编译安装 最新版本的软件(如 Nginx、MySQL、Python),核心步骤固定,只需掌握依赖安装、编译配置、编译、安装四步。
(1)源码编译核心步骤(万能公式,必背)
bash
运行
# 1. 安装编译依赖(必备,否则编译失败,不同软件依赖不同,需查官方文档)
sudo apt install gcc g++ make cmake libssl-dev -y # Ubuntu通用编译依赖
sudo dnf install gcc gcc-c++ make cmake openssl-devel -y # CentOS通用编译依赖
# 2. 下载源码包并解压(官网下载,如Nginx、Python)
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
# 3. 配置编译参数(./configure,指定安装路径、开启/关闭功能)
./configure --prefix=/usr/local/nginx # --prefix指定安装路径(核心)
# 4. 编译(make,耗时根据软件大小,多核可加-j参数,如make -j4,4核编译)
make -j4
# 5. 安装(make install,安装到--prefix指定的路径)
sudo make install
# 6. 验证安装(执行安装路径下的二进制文件)
/usr/local/nginx/sbin/nginx -v
(2)核心注意事项
- 依赖安装是关键 :编译失败 99% 是因为缺少依赖,根据报错信息安装对应的依赖包(如
error: openssl/ssl.h: No such file or directory,安装libssl-dev/openssl-devel); - --prefix 指定安装路径:方便后续卸载(直接删除安装目录即可),避免文件散落在系统各处;
- 多核编译 :
make -jN(N 为 CPU 核心数),大幅提升编译速度,可通过nproc查看 CPU 核心数。
3.6 开发环境搭建(Linux 开发必备,适配程序员)
Linux 是后端开发 / 嵌入式开发的首选系统,核心开发环境包括GCC/G++、Python、Java、Git、Docker,一键搭建,适配绝大多数开发场景。
(1)C/C++ 开发环境(GCC/G++/Make/CMake)
bash
运行
# Ubuntu
sudo apt install gcc g++ make cmake gdb -y
# CentOS
sudo dnf install gcc gcc-c++ make cmake gdb -y
# 验证
gcc --version
g++ --version
(2)Python 开发环境(3.8+/3.10+,源码编译安装最新版)
bash
运行
# 安装依赖
sudo apt install gcc make zlib1g-dev libffi-dev libssl-dev -y
# 下载Python3.12源码
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
tar -zxvf Python-3.12.0.tgz
cd Python-3.12.0
# 配置编译参数(--enable-optimizations开启优化)
./configure --prefix=/usr/local/python312 --enable-optimizations
# 编译安装
make -j4
sudo make install
# 创建软链接,替代系统默认Python
sudo ln -s /usr/local/python312/bin/python3 /usr/bin/python3
sudo ln -s /usr/local/python312/bin/pip3 /usr/bin/pip3
# 验证
python3 --version
pip3 --version
(3)Java 开发环境(JDK8/JDK17,主流版本)
bash
运行
# 安装OpenJDK17(Ubuntu)
sudo apt install openjdk-17-jdk -y
# CentOS
sudo dnf install java-17-openjdk-devel -y
# 验证
java -version
javac -version
# 配置JAVA_HOME(编辑/etc/profile,永久生效)
sudo vim /etc/profile
# 添加:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64(根据实际路径修改)
# export PATH=$JAVA_HOME/bin:$PATH
# 生效配置
source /etc/profile
# 验证
echo $JAVA_HOME
(4)版本控制(Git,开发必备)
bash
运行
# Ubuntu
sudo apt install git -y
# CentOS
sudo dnf install git -y
# 配置Git(用户名和邮箱,关联代码仓库)
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
# 验证
git --version
# 查看配置
git config --global --list
(5)容器化入门(Docker,开发 / 部署通用,一键安装)
Docker 是 Linux容器化技术,实现「一次构建,到处运行」,避免环境不一致问题,开发 / 运维都必须掌握,一键安装命令:
bash
运行
# Ubuntu一键安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 启动Docker并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 验证
sudo docker --version
sudo docker run hello-world # 运行测试容器,成功则安装完成
# 普通用户免sudo执行Docker(无需每次加sudo)
sudo usermod -aG docker $USER
# 退出当前终端,重新登录生效
3.7 系统性能监控与调优(top/vmstat/iostat/sar,高级运维)
生产环境中需要实时监控 Linux 系统性能,排查「CPU 高、内存满、磁盘 IO 高、网络卡顿」等问题,核心工具:
- top:实时监控进程的 CPU、内存占用(基础);
- vmstat :监控系统整体性能(CPU、内存、磁盘 IO、进程状态),
vmstat 1(每秒刷新一次); - iostat :监控磁盘 IO 性能(磁盘读写速度、利用率),
iostat -x 1(详细 IO 信息,每秒刷新); - sar :系统活动报告,可监控 CPU、内存、磁盘、网络,需安装:
sudo apt install sysstat -y,sar -n DEV 1(监控网络); - htop :top 的升级版,更直观,需安装:
sudo apt install htop -y。
性能调优入门原则:
- CPU 高:排查占用 CPU 的进程(top 按 P 排序),优化程序 / 脚本,关闭无用进程;
- 内存满:排查内存泄漏的进程(top 按 M 排序),扩展 swap 分区,升级物理内存;
- 磁盘 IO 高:排查频繁读写的进程(iostat),优化程序的文件操作,使用 SSD 硬盘;
- 网络卡顿:排查网络带宽占用(sar -n DEV),限制进程带宽,升级网络带宽。
第四阶段:Linux 实战落地
核心目标 :将前三个阶段的知识点整合到实际场景 ,通过项目实战强化能力,实现「从理论到实践」的跨越,以下是 4 个经典实战场景,覆盖运维 和开发,建议逐个完成。
实战 1:Linux 服务器初始化(生产环境必备)
新购云服务器 / 新装 Linux 系统后,必须进行初始化配置,提升安全性和可用性,步骤固定,可编写 Shell 脚本一键执行:
- 更换软件源(阿里云 / 清华源,提升软件安装速度);
- 更新系统软件(
apt upgrade -y/dnf upgrade -y); - 配置 SSH(改端口、禁用密码、禁用 root 登录、配置免密);
- 开启防火墙并开放必要端口(SSH、80、443);
- 创建普通用户并配置 sudo 权限;
- 关闭无用服务(减少系统资源占用);
- 配置 swap 分区(扩展虚拟内存);
- 安装常用工具(wget、curl、vim、net-tools、htop);
- 配置定时任务(自动更新、自动清理日志、自动备份)。
实战 2:Nginx 服务部署与配置(Web 服务器运维)
Nginx 是 Linux 最常用的Web 服务器 / 反向代理服务器,部署静态网站、反向代理后端服务,实战步骤:
- 安装 Nginx(源码编译安装最新版,指定安装路径);
- 配置 Nginx(
/usr/local/nginx/conf/nginx.conf),设置静态网站根目录、监听端口; - 启动 Nginx 并设置开机自启(编写 systemd 服务文件);
- 开放防火墙端口(80/443);
- 部署静态网站(将 HTML/CSS/JS 文件放到 Nginx 根目录);
- 配置 Nginx 反向代理(代理后端 Java/Python 服务,实现前后端分离);
- 配置 Nginx 日志轮转(防止日志占满磁盘);
- 监控 Nginx 运行状态(查看日志、监控端口、检测服务可用性)。
实战 3:MySQL 数据库备份与恢复(数据安全核心)
数据库是生产环境的核心,定时备份 + 快速恢复是必备能力,实战步骤:
- 安装 MySQL(包管理器 / 源码编译)并启动服务;
- 编写 Shell 备份脚本(mysqldump 全量备份,压缩保存,删除旧备份);
- 配置 crontab 定时任务(每天凌晨备份,每周全量备份,每日增量备份);
- 测试备份文件的恢复(模拟数据库损坏,用备份文件恢复数据);
- 配置 MySQL 主从复制(进阶,实现数据异地备份,提升可用性)。
实战 4:Shell 脚本自动化运维(批量管理多台服务器)
当管理多台 Linux 服务器时,手动操作效率极低,编写 Shell 脚本实现批量操作,实战步骤:
- 配置本地服务器与所有远程服务器的 SSH 免密登录(核心);
- 编写批量执行命令的 Shell 脚本(通过 ssh 批量执行远程命令,如批量更新系统、批量安装软件);
- 编写批量文件同步脚本(通过 rsync 批量同步文件到所有远程服务器);
- 编写批量监控脚本(批量监控多台服务器的 CPU、内存、磁盘使用情况,异常时邮件告警);
- 编写批量备份脚本(批量备份多台服务器的核心数据到本地 / 云存储)。
Linux 学习资源与进阶方向
4.1 优质学习资源(免费 + 付费,精选)
(1)免费文档 / 教程
- Linux 官方文档:Ubuntu 官方文档、CentOS 官方文档;
- Linux 命令大全:Linux 命令行大全、菜鸟教程 Linux 教程;
- Shell 脚本:Shell 脚本教程、菜鸟教程 Shell 教程;
- 鸟哥的 Linux 私房菜:经典 Linux 教程,入门到进阶。
(2)视频教程(B 站免费)
- 《Linux 就该这么学》:适合零基础,实操性强;
- 《尚硅谷 Linux 教程》:全面细致,覆盖运维核心;
- 《Shell 脚本编程从入门到精通》:手把手教写脚本。
(3)在线练习平台(无需搭建环境,直接敲命令)
4.2 进阶方向(根据职业规划选择)
(1)Linux 运维方向
- 进阶知识点:K8s(Kubernetes)、Ansible(批量运维)、ELK(日志分析)、Prometheus+Grafana(监控)、Ceph(分布式存储);
- 职业发展:Linux 运维工程师→高级运维工程师→运维架构师→DevOps 工程师。
(2)Linux 开发方向
- 进阶知识点:C/C++ Linux 开发、嵌入式 Linux 开发、Python/Go 后端开发、容器化开发(Docker/K8s)、网络编程(Socket);
- 职业发展:Linux 开发工程师→嵌入式开发工程师→后端开发工程师→技术架构师。
(3)云计算 / 大数据方向
- 进阶知识点:阿里云 / 腾讯云 / 华为云运维、Hadoop/Spark 大数据平台搭建、Flink 实时计算、云原生(K8s / 容器 / 服务网格);
- 职业发展:云计算工程师→大数据工程师→云原生工程师→云计算架构师。