Linux 入门到进阶之路(2026版)

Linux 学习体系(Ubuntu/CentOS 通用)

本体系按 **「入门基础→进阶管理→高级运维 / 开发→实战落地」** 四阶段搭建,兼顾实用性系统性 ,以 Ubuntu/Debian(apt 包管理)为主,同时兼容 CentOS/RHEL(dnf/yum 包管理),覆盖 Linux 日常使用、服务器运维、开发环境搭建核心能力,每个阶段配核心知识点 + 实操指令 + 应用场景,零基础可循序渐进,有基础可针对性进阶。

核心学习原则

  1. 命令行优先:Linux 的核心能力在命令行,桌面环境仅作辅助,多敲多练是关键;
  2. 场景驱动:所有知识点结合实际场景(如文件传输、权限管理、服务部署),避免死记硬背;
  3. 实操验证:每学一个指令 / 配置,立刻在虚拟机 / 云服务器上测试,强化记忆;
  4. 举一反三 :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 三种核心模式

  1. 普通模式(命令模式):打开 Vim 默认进入,用于移动光标、删除、复制、粘贴、撤销等;
  2. 插入模式 :用于输入文本,从普通模式按i/a/o进入,按Esc返回普通模式;
  3. 命令行模式 :用于保存、退出、查找、替换等,从普通模式按:进入,执行命令后按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.comping 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 用户名@IPscp -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

关键注意事项

  1. 定时任务中必须使用绝对路径(命令 / 脚本 / 文件),因为 crontab 的环境变量有限,相对路径会失效;
  2. 脚本执行前先手动测试,确保能正常运行;
  3. 定时任务的执行日志会写入/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)核心注意事项

  1. 依赖安装是关键 :编译失败 99% 是因为缺少依赖,根据报错信息安装对应的依赖包(如error: openssl/ssl.h: No such file or directory,安装libssl-dev/openssl-devel);
  2. --prefix 指定安装路径:方便后续卸载(直接删除安装目录即可),避免文件散落在系统各处;
  3. 多核编译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 高、网络卡顿」等问题,核心工具:

  1. top:实时监控进程的 CPU、内存占用(基础);
  2. vmstat :监控系统整体性能(CPU、内存、磁盘 IO、进程状态),vmstat 1(每秒刷新一次);
  3. iostat :监控磁盘 IO 性能(磁盘读写速度、利用率),iostat -x 1(详细 IO 信息,每秒刷新);
  4. sar :系统活动报告,可监控 CPU、内存、磁盘、网络,需安装:sudo apt install sysstat -ysar -n DEV 1(监控网络);
  5. 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 脚本一键执行:

  1. 更换软件源(阿里云 / 清华源,提升软件安装速度);
  2. 更新系统软件(apt upgrade -y/dnf upgrade -y);
  3. 配置 SSH(改端口、禁用密码、禁用 root 登录、配置免密);
  4. 开启防火墙并开放必要端口(SSH、80、443);
  5. 创建普通用户并配置 sudo 权限;
  6. 关闭无用服务(减少系统资源占用);
  7. 配置 swap 分区(扩展虚拟内存);
  8. 安装常用工具(wget、curl、vim、net-tools、htop);
  9. 配置定时任务(自动更新、自动清理日志、自动备份)。

实战 2:Nginx 服务部署与配置(Web 服务器运维)

Nginx 是 Linux 最常用的Web 服务器 / 反向代理服务器,部署静态网站、反向代理后端服务,实战步骤:

  1. 安装 Nginx(源码编译安装最新版,指定安装路径);
  2. 配置 Nginx(/usr/local/nginx/conf/nginx.conf),设置静态网站根目录、监听端口;
  3. 启动 Nginx 并设置开机自启(编写 systemd 服务文件);
  4. 开放防火墙端口(80/443);
  5. 部署静态网站(将 HTML/CSS/JS 文件放到 Nginx 根目录);
  6. 配置 Nginx 反向代理(代理后端 Java/Python 服务,实现前后端分离);
  7. 配置 Nginx 日志轮转(防止日志占满磁盘);
  8. 监控 Nginx 运行状态(查看日志、监控端口、检测服务可用性)。

实战 3:MySQL 数据库备份与恢复(数据安全核心)

数据库是生产环境的核心,定时备份 + 快速恢复是必备能力,实战步骤:

  1. 安装 MySQL(包管理器 / 源码编译)并启动服务;
  2. 编写 Shell 备份脚本(mysqldump 全量备份,压缩保存,删除旧备份);
  3. 配置 crontab 定时任务(每天凌晨备份,每周全量备份,每日增量备份);
  4. 测试备份文件的恢复(模拟数据库损坏,用备份文件恢复数据);
  5. 配置 MySQL 主从复制(进阶,实现数据异地备份,提升可用性)。

实战 4:Shell 脚本自动化运维(批量管理多台服务器)

当管理多台 Linux 服务器时,手动操作效率极低,编写 Shell 脚本实现批量操作,实战步骤:

  1. 配置本地服务器与所有远程服务器的 SSH 免密登录(核心);
  2. 编写批量执行命令的 Shell 脚本(通过 ssh 批量执行远程命令,如批量更新系统、批量安装软件);
  3. 编写批量文件同步脚本(通过 rsync 批量同步文件到所有远程服务器);
  4. 编写批量监控脚本(批量监控多台服务器的 CPU、内存、磁盘使用情况,异常时邮件告警);
  5. 编写批量备份脚本(批量备份多台服务器的核心数据到本地 / 云存储)。

Linux 学习资源与进阶方向

4.1 优质学习资源(免费 + 付费,精选)

(1)免费文档 / 教程

(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 / 容器 / 服务网格);
  • 职业发展:云计算工程师→大数据工程师→云原生工程师→云计算架构师。
相关推荐
安科士andxe5 小时前
深入解析|安科士1.25G CWDM SFP光模块核心技术,破解中长距离传输痛点
服务器·网络·5g
小白同学_C8 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖8 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
2601_949146538 小时前
Shell语音通知接口使用指南:运维自动化中的语音告警集成方案
运维·自动化
儒雅的晴天9 小时前
大模型幻觉问题
运维·服务器
Gofarlic_OMS10 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
通信大师10 小时前
深度解析PCC策略计费控制:核心网产品与应用价值
运维·服务器·网络·5g
dixiuapp10 小时前
智能工单系统如何选,实现自动化与预测性维护
运维·自动化
不做无法实现的梦~10 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
Elastic 中国社区官方博客10 小时前
如何防御你的 RAG 系统免受上下文投毒攻击
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索