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 / 容器 / 服务网格);
  • 职业发展:云计算工程师→大数据工程师→云原生工程师→云计算架构师。
相关推荐
AlfredZhao21 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
小宇宙Zz2 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信