Ubuntu 命令速查手册 v2.5

Ubuntu 命令速查手册 v2.5

文章目录

  • [Ubuntu 命令速查手册 v2.5](#Ubuntu 命令速查手册 v2.5)
    • 一、文件与目录管理
      • [1.1 导航与查看](#1.1 导航与查看)
      • [1.2 文件操作](#1.2 文件操作)
      • [1.3 搜索与查找](#1.3 搜索与查找)
    • 二、系统管理
      • [2.1 系统信息](#2.1 系统信息)
      • [2.2 进程管理](#2.2 进程管理)
      • [2.3 服务与系统管理(systemd/systemctl 详解)](#2.3 服务与系统管理(systemd/systemctl 详解))
        • [2.3.1 基础服务生命周期管理](#2.3.1 基础服务生命周期管理)
        • [2.3.2 服务状态与列表查询](#2.3.2 服务状态与列表查询)
        • [2.3.3 开机自启与服务屏蔽](#2.3.3 开机自启与服务屏蔽)
        • [2.3.4 系统级操作(关机/重启/电源管理)](#2.3.4 系统级操作(关机/重启/电源管理))
        • [2.3.5 单元文件管理](#2.3.5 单元文件管理)
        • [2.3.6 系统日志管理(journalctl)](#2.3.6 系统日志管理(journalctl))
        • [2.3.7 运行级别(Target)管理](#2.3.7 运行级别(Target)管理)
      • [2.4 内核参数管理(sysctl 详解)](#2.4 内核参数管理(sysctl 详解))
      • [2.5 AppArmor 强制访问控制详解](#2.5 AppArmor 强制访问控制详解)
        • [2.5.1 基础状态查看](#2.5.1 基础状态查看)
        • [2.5.2 模式切换(核心操作)](#2.5.2 模式切换(核心操作))
        • [2.5.3 配置文件管理](#2.5.3 配置文件管理)
        • [2.5.4 日志查看与调试](#2.5.4 日志查看与调试)
    • 三、软件包管理(APT/DPKG)
    • 四、压缩与解压
    • [五、网络管理(ip 命令详解)](#五、网络管理(ip 命令详解))
      • [5.1 网络接口管理(ip link)](#5.1 网络接口管理(ip link))
      • [5.2 IP地址管理(ip addr)](#5.2 IP地址管理(ip addr))
      • [5.3 路由表管理(ip route)](#5.3 路由表管理(ip route))
      • [5.4 ARP缓存管理(ip neigh)](#5.4 ARP缓存管理(ip neigh))
      • [5.5 其他常用网络命令](#5.5 其他常用网络命令)
    • 六、磁盘管理
      • [6.1 基础磁盘信息查看](#6.1 基础磁盘信息查看)
      • [6.2 磁盘分区管理(MBR vs GPT)](#6.2 磁盘分区管理(MBR vs GPT))
        • [6.2.1 MBR分区表详解](#6.2.1 MBR分区表详解)
        • [6.2.2 GPT分区表详解](#6.2.2 GPT分区表详解)
        • [6.2.3 MBR与GPT核心区别对比](#6.2.3 MBR与GPT核心区别对比)
        • [6.2.4 MBR分区操作(fdisk,支持\<2TB磁盘)](#6.2.4 MBR分区操作(fdisk,支持<2TB磁盘))
        • [6.2.5 GPT分区操作(parted,支持\>2TB磁盘)](#6.2.5 GPT分区操作(parted,支持>2TB磁盘))
        • [6.2.1 fdisk(MBR分区,支持\<2TB磁盘)](#6.2.1 fdisk(MBR分区,支持<2TB磁盘))
        • [6.2.2 parted(GPT分区,支持\>2TB磁盘)](#6.2.2 parted(GPT分区,支持>2TB磁盘))
      • [6.3 文件系统创建与格式化](#6.3 文件系统创建与格式化)
      • [6.4 挂载与卸载](#6.4 挂载与卸载)
      • [6.5 LVM逻辑卷管理(核心)](#6.5 LVM逻辑卷管理(核心))
      • [6.6 磁盘检查与修复](#6.6 磁盘检查与修复)
      • [6.7 交换分区管理](#6.7 交换分区管理)
    • [七、防火墙管理(iptables 详解)](#七、防火墙管理(iptables 详解))
      • [7.1 基础概念](#7.1 基础概念)
      • [7.2 规则查看与管理](#7.2 规则查看与管理)
      • [7.3 基础规则配置](#7.3 基础规则配置)
      • [7.4 NAT配置(软路由/端口转发)](#7.4 NAT配置(软路由/端口转发))
      • [7.5 规则持久化](#7.5 规则持久化)
    • 八、虚拟机管理(KVM/QEMU/libvirt)
      • [8.1 基础状态查看](#8.1 基础状态查看)
      • [8.2 虚拟机生命周期管理](#8.2 虚拟机生命周期管理)
      • [8.3 虚拟机配置管理](#8.3 虚拟机配置管理)
      • [8.4 磁盘镜像管理(qemu\-img)](#8.4 磁盘镜像管理(qemu-img))
      • [8.5 快照管理](#8.5 快照管理)
      • [8.6 虚拟机克隆](#8.6 虚拟机克隆)
    • 九、用户与权限管理
    • 十、新手避坑指南
    • 十一、获取帮助

一、文件与目录管理

1.1 导航与查看

Bash 复制代码
pwd                          # 显示当前工作目录
cd /path/to/directory        # 切换到指定目录
cd ..                        # 返回上一级目录
cd ~                         # 返回用户主目录
cd -                         # 返回上一次所在目录

ls                           # 列出当前目录文件
ls -l                        # 详细列表(权限、大小、时间)
ls -la                       # 显示所有文件(包括隐藏文件)
ls -lh                       # 以人类可读格式显示大小
ls -lt                       # 按修改时间排序(最新在前)

1.2 文件操作

Bash 复制代码
touch filename.txt           # 创建空文件
mkdir directory              # 创建目录
mkdir -p dir1/dir2/dir3      # 递归创建多级目录

cp source destination        # 复制文件
cp -r source_dir dest_dir    # 递归复制目录
mv source destination        # 移动/重命名文件/目录
rm filename                  # 删除文件
rm -r directory              # 删除目录及其内容
rm -rf directory             # 强制删除(⚠️ 危险操作)

cat filename                 # 查看文件全部内容
head filename                # 查看文件前10行
head -n 20 filename          # 查看文件前20行
tail filename                # 查看文件后10行
tail -f filename             # 实时跟踪文件变化
less filename                # 分页查看文件(q退出)

1.3 搜索与查找

Bash 复制代码
find /path -name "*.txt"     # 按名称查找文件
find /path -type f -size +10M # 查找大于10MB的文件
grep "keyword" filename      # 在文件中搜索关键词
grep -r "keyword" /path      # 递归搜索目录
grep -i "keyword" filename   # 忽略大小写搜索

二、系统管理

2.1 系统信息

Bash 复制代码
uname -a                     # 显示系统内核信息
lsb_release -a               # 显示Ubuntu发行版信息
hostname                     # 显示主机名
uptime                       # 显示系统运行时间
whoami                       # 显示当前用户名
id                           # 显示当前用户ID和组ID
df -h                        # 显示磁盘使用情况
du -sh /path                 # 显示目录总大小
free -h                      # 显示内存使用情况

2.2 进程管理

Bash 复制代码
ps aux                       # 显示所有进程
ps aux | grep nginx          # 查找特定进程
top                          # 实时进程监控
htop                         # 增强版top(需安装)
kill PID                     # 终止进程
kill -9 PID                  # 强制终止进程
pkill process_name           # 按名称终止进程

jobs                         # 列出后台任务
bg %1                        # 将任务放到后台运行
fg %1                        # 将后台任务调到前台
Ctrl+Z                       # 暂停当前任务
Ctrl+C                       # 终止当前任务

2.3 服务与系统管理(systemd/systemctl 详解)

⚠️ Ubuntu 16.04+ 全面采用 systemd 作为初始化系统

2.3.1 基础服务生命周期管理
Bash 复制代码
sudo systemctl start nginx           # 启动服务
sudo systemctl stop nginx            # 停止服务
sudo systemctl restart nginx         # 重启服务
sudo systemctl reload nginx          # 重载配置(不中断服务)
sudo systemctl reload-or-restart nginx # 智能重载(生产推荐)
sudo systemctl try-restart nginx     # 仅运行时重启
sudo systemctl kill nginx            # 强制杀死所有子进程
2.3.2 服务状态与列表查询
Bash 复制代码
systemctl status nginx               # 查看单个服务详细状态
systemctl list-units                 # 查看所有运行的单元
systemctl list-units --type=service  # 仅查看服务
systemctl list-units --all           # 查看所有已加载单元
systemctl list-units --failed        # 查看所有失败的单元
systemctl list-unit-files            # 查看所有已安装的单元文件
systemctl is-active nginx            # 检查是否运行
systemctl is-enabled nginx           # 检查是否开机自启
systemctl is-failed nginx            # 检查是否失败
2.3.3 开机自启与服务屏蔽
Bash 复制代码
sudo systemctl enable nginx          # 设置开机自启
sudo systemctl enable --now nginx    # 设置自启并立即启动
sudo systemctl disable nginx         # 取消开机自启
sudo systemctl mask nginx            # 彻底屏蔽(禁止任何方式启动)
sudo systemctl unmask nginx          # 取消屏蔽
2.3.4 系统级操作(关机/重启/电源管理)
Bash 复制代码
sudo systemctl reboot                # 立即重启
sudo systemctl poweroff              # 立即关机
sudo systemctl suspend               # 挂起(内存供电)
sudo systemctl hibernate             # 休眠(写入磁盘)
sudo systemctl hybrid-sleep          # 混合休眠
sudo shutdown -h +10 "系统将在10分钟后关机" # 定时关机
sudo shutdown -c                     # 取消定时关机
2.3.5 单元文件管理
Bash 复制代码
systemctl cat nginx                  # 查看单元文件内容
systemctl show nginx                 # 查看所有属性
systemctl list-dependencies nginx    # 查看依赖关系
sudo systemctl edit nginx            # 安全编辑(创建覆盖文件)
sudo systemctl daemon-reload         # 重新加载所有单元配置(修改后必须执行)
2.3.6 系统日志管理(journalctl)
Bash 复制代码
journalctl                           # 查看所有系统日志
journalctl -f                        # 实时跟踪日志
journalctl -u nginx                  # 查看指定服务日志
journalctl -u nginx -f               # 实时跟踪服务日志
journalctl --since "1 hour ago"      # 查看指定时间范围日志
journalctl -p err                    # 只显示错误及以上级别日志
journalctl -b                        # 查看本次启动日志
journalctl -k                        # 查看内核日志(替代dmesg)
sudo journalctl --vacuum-size=1G     # 清理旧日志(保留1GB)
2.3.7 运行级别(Target)管理
Bash 复制代码
systemctl get-default                # 查看当前默认运行级别
sudo systemctl set-default multi-user.target # 设置为字符界面(服务器推荐)
sudo systemctl set-default graphical.target  # 设置为图形界面
sudo systemctl isolate multi-user.target     # 临时切换到字符界面
sudo systemctl rescue                # 救援模式(单用户)
sudo systemctl emergency             # 紧急模式(最小化系统)

2.4 内核参数管理(sysctl 详解)

⚠️ 核心说明:sysctl 是 Linux 内核运行时参数配置工具,无需重启系统即可修改内核行为。所有参数都对应 `/proc/sys/` 目录下的虚拟文件

2.4.1 基础用法
Bash 复制代码
sysctl -a                            # 查看所有内核参数
sysctl kernel.hostname               # 查看单个参数
sudo sysctl -w kernel.hostname="ubuntu-server" # 临时修改(重启失效,用于测试)
sudo sysctl --system                 # 加载所有配置文件并生效(推荐)
sudo sysctl -p /etc/sysctl.d/99-custom.conf # 加载指定配置文件
sysctl -d net.ipv4.tcp_fin_timeout   # 显示参数的默认值
2.4.2 永久修改参数

⚠️ 配置文件优先级(从高到低,后加载的覆盖先加载的):

    1. `/etc/sysctl.d/*.conf`(管理员自定义,强烈推荐,系统更新不会覆盖)
    1. `/run/sysctl.d/*.conf`(运行时临时配置,重启失效)
    1. `/usr/lib/sysctl.d/*.conf`(系统/软件包默认配置,绝对不要手动修改
    1. `/etc/sysctl.conf`(传统主配置文件,优先级最低,不推荐使用)

加载规则:

  • 同目录下的文件按字典顺序加载,文件名越靠后优先级越高

  • 推荐使用`99-`前缀命名自定义配置文件,确保覆盖所有默认配置

  • 要屏蔽某个默认配置,在`/etc/sysctl.d/`创建同名符号链接指向`/dev/null`即可

Bash 复制代码
# 1. 创建自定义配置文件(按功能分类命名,便于维护)
sudo nano /etc/sysctl.d/99-network-tuning.conf

# 2. 添加参数(每行一个,注释用#开头)
net.ipv4.ip_forward=1
net.ipv4.tcp_syncookies=1

# 3. 加载所有配置文件并生效(替代传统的sysctl -p)
sudo sysctl --system

# 4. 验证参数是否生效(最可靠方式)
cat /proc/sys/net/ipv4/ip_forward
2.4.3 通用常用参数
Bash 复制代码
# 网络基础参数
net.ipv4.ip_forward=1                # 开启IP转发(软路由/容器/虚拟机必备)
net.ipv4.tcp_syncookies=1            # 防止SYN洪水攻击
net.ipv4.conf.all.accept_redirects=0 # 禁用ICMP重定向(安全加固)
net.ipv4.conf.all.accept_source_route=0 # 禁用源路由(安全加固)
net.ipv4.conf.all.rp_filter=1        # 开启反向路径过滤(防止IP欺骗)
net.ipv4.icmp_echo_ignore_all=1      # 禁用ping响应

# 网络性能优化
net.core.default_qdisc=fq            # 开启TCP BBR拥塞控制
net.ipv4.tcp_congestion_control=bbr
net.ipv4.ip_local_port_range=1024 65535 # 调整TCP端口范围

# 系统性能调优
fs.file-max=6553500                  # 全局文件描述符限制(高并发必备)
net.netfilter.nf_conntrack_max=1048576 # 连接跟踪表大小(防火墙/NAT必备)

# 安全加固
kernel.randomize_va_space=2          # 开启地址空间随机化(ASLR)
kernel.yama.ptrace_scope=1           # 限制ptrace调试(防止进程注入)
kernel.dmesg_restrict=1              # 限制普通用户查看dmesg日志
kernel.perf_event_paranoid=3         # 限制普通用户使用perf工具
2.4.4 场景化调优参数
高并发Web/API服务器(Nginx/Go/Java)
Bash 复制代码
# 连接队列优化(解决高并发连接被拒问题)
net.core.somaxconn=65535                # TCP全连接队列大小(默认128)
net.ipv4.tcp_max_syn_backlog=65535      # TCP半连接队列大小(默认128)

# 连接管理优化
net.ipv4.tcp_fin_timeout=30             # 缩短TIME_WAIT超时(默认60秒)
net.ipv4.tcp_max_tw_buckets=65535       # 最大TIME_WAIT套接字数量
net.ipv4.tcp_tw_reuse=1                 # 允许TIME_WAIT套接字复用(客户端侧)
net.ipv4.tcp_keepalive_time=600         # TCP保活时间(默认7200秒)
net.ipv4.tcp_keepalive_intvl=30         # 保活探测间隔
net.ipv4.tcp_keepalive_probes=3         # 保活探测次数

# 网络缓冲区优化
net.core.rmem_max=16777216              # 最大接收缓冲区(16MB)
net.core.wmem_max=16777216              # 最大发送缓冲区(16MB)
net.ipv4.tcp_rmem=4096 87380 16777216   # TCP接收缓冲区(最小/默认/最大)
net.ipv4.tcp_wmem=4096 65536 16777216   # TCP发送缓冲区(最小/默认/最大)
数据库服务器(MySQL/PostgreSQL/MongoDB)
Bash 复制代码
# 内存管理优化
vm.swappiness=1                          # 尽量不使用交换分区(数据库推荐0-1)
vm.dirty_ratio=10                        # 脏数据占内存10%时开始写入磁盘
vm.dirty_background_ratio=5              # 后台进程在脏数据占5%时开始写入
vm.overcommit_memory=2                   # 严格内存分配,防止OOM
vm.max_map_count=262144                  # 最大内存映射区域数(Elasticsearch/MongoDB必备)

# 文件系统优化
fs.file-max=6553500                      # 全局文件描述符限制
fs.aio-max-nr=1048576                    # 最大异步IO请求数
容器/虚拟化服务器(Docker/KVM/Kubernetes)
Bash 复制代码
# 必须在宿主机设置的全局参数
fs.file-max=2097152
fs.nr_open=2097152
vm.swappiness=0
vm.dirty_ratio=10
vm.dirty_background_ratio=5
vm.max_map_count=262144
fs.aio-max-nr=1048576
net.netfilter.nf_conntrack_max=262144    # 连接跟踪表大小

# 网络转发优化
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
2.4.5 常见问题与排查

问题1:修改配置文件后参数不生效

Bash 复制代码
# 1. 检查是否使用了正确的加载命令
# ❌ 错误:sysctl -p 只加载/etc/sysctl.conf
# ✅ 正确:sysctl --system 加载所有配置文件
sudo sysctl --system

# 2. 检查配置文件是否被更高优先级的文件覆盖
sysctl --system | grep "net.ipv4.tcp_fin_timeout"
# 输出会显示哪个文件最后设置了该参数

# 3. 验证参数真实值(最可靠,直接读取内核虚拟文件)
cat /proc/sys/net/ipv4/tcp_fin_timeout

# 4. 检查配置文件语法错误
# 语法错误会导致整个文件不加载,且无明显报错
sudo sysctl -p /etc/sysctl.d/99-custom.conf
# 有错误会显示具体行号和错误信息

问题2:重启后参数恢复默认值

  • 原因1:只使用了`sysctl -w`临时修改,未写入配置文件

  • 原因2:配置文件权限不正确(必须是644)
    sudo chmod 644 /etc/sysctl.d/99\-custom.conf

  • 原因3:参数依赖的内核模块未加载
    \# 例如nf\_conntrack参数需要加载对应模块 sudo modprobe nf\_conntrack \# 永久加载模块 ``echo \&\#34;nf\_conntrack\&\#34; \| sudo tee /etc/modules\-load.d/conntrack.conf

问题3:容器内修改sysctl参数无效

  • 绝大多数sysctl参数是全局的,只能在宿主机设置

  • Docker容器仅支持有限的namespaced参数,需在启动时显式传递
    docker run \-\-sysctl net.core.somaxconn=65535 nginx

2.4.6 最佳实践
  1. 永远不要直接修改`/etc/sysctl.conf`:该文件优先级最低,易被`/etc/sysctl.d/`下的文件覆盖,且系统更新可能修改它

  2. 使用`/etc/sysctl.d/`目录管理配置:按功能分类创建文件(如`99-network.conf`、`99-database.conf`),便于维护和版本控制

  3. 使用`99-`前缀命名自定义文件:确保按字典顺序最后加载,覆盖所有默认配置

  4. 先临时测试再永久保存:先用`sysctl -w 参数=值`测试效果,确认没问题再写入配置文件

  5. 修改后使用`sysctl --system`加载:替代传统的`sysctl -p`,确保所有配置文件都被加载

  6. 不要盲目复制网上的调优参数:不同硬件和应用场景需要不同的配置,调优后必须进行压力测试

  7. 定期备份配置文件:备份`/etc/sysctl.d/`目录,防止配置错误导致系统问题

2.5 AppArmor 强制访问控制详解

⚠️ Ubuntu 默认启用的内核级安全模块,限制进程只能访问必要资源

2.5.1 基础状态查看
Bash 复制代码
aa-enabled                           # 检查是否启用
sudo aa-status                       # 查看完整状态
sudo aa-status --enforced            # 查看强制模式配置文件数
systemctl status apparmor            # 查看服务状态
2.5.2 模式切换(核心操作)
Bash 复制代码
sudo aa-enforce /usr/sbin/nginx      # 切换到强制模式(生产推荐)
sudo aa-complain /usr/sbin/mysqld    # 切换到宽容模式(调试用)
sudo aa-audit /usr/bin/docker        # 切换到审计模式
sudo aa-disable /usr/sbin/libvirtd   # 临时禁用
2.5.3 配置文件管理
Bash 复制代码
ls /etc/apparmor.d/                  # 列出所有配置文件
cat /etc/apparmor.d/usr.sbin.nginx   # 查看配置文件内容
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx # 重新加载
sudo systemctl reload apparmor       # 重新加载所有配置文件
2.5.4 日志查看与调试
Bash 复制代码
journalctl -u apparmor -f            # 实时跟踪日志
sudo aa-logprof                       # 自动分析日志并更新配置文件

三、软件包管理(APT/DPKG)

Bash 复制代码
sudo apt update                      # 更新软件源列表
sudo apt upgrade                     # 升级所有已安装软件
sudo apt install package             # 安装软件包
sudo apt remove package              # 卸载(保留配置)
sudo apt purge package               # 彻底卸载(删除配置)
sudo apt autoremove                  # 自动删除无用依赖
sudo apt search keyword              # 搜索软件包
sudo apt show package                # 显示详细信息

sudo dpkg -i package.deb             # 安装本地deb包
sudo dpkg -l | grep package          # 查找已安装软件
sudo dpkg -r package                 # 卸载deb包

四、压缩与解压

Bash 复制代码
# tar.gz
tar -zcvf archive.tar.gz /path       # 压缩
tar -zxvf archive.tar.gz             # 解压

# tar.bz2
tar -jcvf archive.tar.bz2 /path      # 压缩
tar -jxvf archive.tar.bz2            # 解压

# zip
zip archive.zip file1 file2          # 压缩
unzip archive.zip                    # 解压

# rar
rar a archive.rar file1 file2        # 压缩(需安装rar)
unrar x archive.rar                  # 解压

五、网络管理(ip 命令详解)

⚠️ ifconfig 已被弃用,推荐使用 ip 命令

5.1 网络接口管理(ip link)

Bash 复制代码
ip link show                         # 显示所有网络接口
ip link set eth0 up                  # 启用eth0接口
ip link set eth0 down                # 禁用eth0接口
ip link set eth0 mtu 1500            # 设置MTU值

5.2 IP地址管理(ip addr)

Bash 复制代码
ip addr show                         # 显示所有IP地址
ip addr show eth0                    # 显示eth0的IP地址
ip addr add 192.168.1.100/24 dev eth0 # 添加静态IP
ip addr del 192.168.1.100/24 dev eth0 # 删除IP地址
ip addr flush dev eth0               # 清空eth0所有IP地址

5.3 路由表管理(ip route)

Bash 复制代码
ip route show                        # 显示路由表
ip route add default via 192.168.1.1 dev eth0 # 添加默认网关
ip route add 10.0.0.0/8 via 192.168.1.2 dev eth0 # 添加静态路由
ip route get 8.8.8.8                 # 查看到目标地址的路由

5.4 ARP缓存管理(ip neigh)

Bash 复制代码
ip neigh show                        # 显示ARP缓存
ip neigh flush all                   # 清空所有ARP缓存

5.5 其他常用网络命令

Bash 复制代码
ping -c 4 8.8.8.8                    # 测试网络连通性
traceroute 8.8.8.8                   # 路由跟踪
dig google.com                       # 高级DNS查询
ss -tulnp                            # 查看所有监听端口及对应进程
curl http://example.com              # 发送HTTP请求
wget http://example.com/file         # 下载文件

六、磁盘管理

6.1 基础磁盘信息查看

Bash 复制代码
lsblk                                # 列出所有块设备(树形结构)
lsblk -f                             # 显示文件系统和UUID
sudo fdisk -l                        # 查看所有磁盘和分区表
blkid                                # 查看块设备UUID和文件系统类型
df -h                                # 查看文件系统使用情况
df -i                                # 查看inode使用情况
du -sh /path                         # 查看目录总大小
sudo smartctl -a /dev/sda            # 查看磁盘SMART健康状态

6.2 磁盘分区管理(MBR vs GPT)

磁盘分区表是磁盘的"目录",用于记录分区的位置、大小、文件系统类型等信息,主流分为 MBR(Master Boot Record,主引导记录)GPT(GUID Partition Table,GUID分区表) 两种,两者适用场景、功能差异较大,需根据磁盘大小和使用需求选择。

6.2.1 MBR分区表详解

定义:MBR是传统分区表格式,诞生于1983年,适用于早期小容量磁盘,依赖BIOS引导,是过去几十年最主流的分区表格式。

核心特点

  • 磁盘容量限制:最大支持 2TB 单盘(超过2TB的部分无法识别和使用)。

  • 分区数量限制:最多支持 4个主分区;若需更多分区,需将1个主分区设为"扩展分区",再在扩展分区内创建"逻辑分区"(最多支持23个逻辑分区)。

  • 引导方式:依赖BIOS引导,不支持UEFI引导。

  • 兼容性:兼容所有主流操作系统(Windows、Linux、macOS),包括老旧设备,兼容性极强。

优缺点

  • 优点:兼容性好、结构简单、占用磁盘空间少(仅占用磁盘开头512字节)。

  • 缺点:容量限制(≤2TB)、分区数量有限、不支持UEFI引导,无法满足大容量磁盘需求。

适用场景:2TB及以下磁盘、老旧电脑(仅支持BIOS)、需要兼容多种老旧操作系统的场景。

6.2.2 GPT分区表详解

定义:GPT是新一代分区表格式,由UEFI(统一可扩展固件接口)引入,用于解决MBR的容量和分区限制,适用于大容量磁盘。

核心特点

  • 磁盘容量限制:理论上支持 18EB(1EB=1024PB,1PB=1024TB),实际受操作系统和磁盘硬件限制(目前主流支持最大100TB+)。

  • 分区数量限制:最多支持 128个主分区,无需扩展分区和逻辑分区,管理更简单。

  • 引导方式:支持UEFI引导(推荐),也可兼容BIOS引导(需开启BIOS的"Legacy模式")。

  • 安全性:包含分区表备份(磁盘开头和结尾各一份),分区表损坏后可恢复;支持CRC校验,减少分区表错误。

优缺点

  • 优点:容量无限制(适配大容量磁盘)、分区数量多、支持UEFI引导、安全性高。

  • 缺点:老旧设备(仅支持BIOS)兼容性差,部分老旧操作系统(如Windows XP)不支持。

适用场景:2TB以上磁盘、新电脑(支持UEFI)、需要多分区管理、追求高安全性的场景(如服务器)。

6.2.3 MBR与GPT核心区别对比
  • 容量限制:MBR≤2TB;GPT理论无上限(实际支持100TB+)。

  • 分区数量:MBR最多4主分区(或3主+1扩展);GPT最多128主分区。

  • 引导方式:MBR仅支持BIOS;GPT支持UEFI(推荐)和BIOS兼容。

  • 安全性:MBR无备份、无校验;GPT有分区表备份和CRC校验。

  • 兼容性:MBR兼容所有系统/设备;GPT兼容新系统/UEFI设备,老旧设备不兼容。

⚠️ 注意:分区表格式一旦确定(MBR或GPT),修改时会清空磁盘所有数据,需提前备份重要文件!

6.2.4 MBR分区操作(fdisk,支持&lt;2TB磁盘)
Bash 复制代码
sudo fdisk /dev/sda                  # 进入交互模式(/dev/sda为目标磁盘)
# 常用命令:
# n(新建分区) → 选择分区类型(p=主分区,e=扩展分区)→ 选择分区号 → 设置起始扇区 → 设置结束扇区/大小
# d(删除分区) → 选择要删除的分区号
# p(打印分区表) → 查看当前分区信息
# t(修改分区类型) → 选择分区号 → 输入分区类型代码(如83=Linux分区,82=交换分区)
# w(保存并退出) → 生效分区设置(不可逆,需确认)
# q(退出不保存) → 放弃所有修改并退出
6.2.5 GPT分区操作(parted,支持&gt;2TB磁盘)
Bash 复制代码
sudo parted /dev/sda                 # 进入交互模式(/dev/sda为目标磁盘)
# 常用命令:
# mklabel gpt → 创建GPT分区表(会清空磁盘数据,谨慎执行)
# mkpart primary ext4 0% 100% → 创建一个占满磁盘的ext4主分区(0%=起始位置,100%=结束位置)
# mkpart primary xfs 0GB 500GB → 创建一个500GB的xfs主分区
# rm 1 → 删除编号为1的分区
# print → 查看当前分区信息
# quit → 退出交互模式(无需单独保存,操作即时生效)
6.2.1 fdisk(MBR分区,支持&lt;2TB磁盘)
Bash 复制代码
sudo fdisk /dev/sda                  # 进入交互模式
# 常用命令:n(新建) d(删除) p(打印) t(修改类型) w(保存) q(退出)
6.2.2 parted(GPT分区,支持&gt;2TB磁盘)
Bash 复制代码
sudo parted /dev/sda                 # 进入交互模式
# 常用命令:mklabel gpt(创建GPT表) mkpart primary ext4 0% 100%(创建分区) print(打印) quit(退出)

6.3 文件系统创建与格式化

Bash 复制代码
sudo mkfs.ext4 /dev/sda1             # 格式化为ext4(默认推荐)
sudo mkfs.ext4 -L "data" /dev/sda1   # 格式化为ext4并设置卷标
sudo mkfs.xfs /dev/sda2              # 格式化为XFS(大文件/高并发)
sudo mkfs.vfat -F 32 /dev/sda3       # 格式化为FAT32(跨平台)

6.4 挂载与卸载

Bash 复制代码
sudo mount /dev/sda1 /mnt            # 临时挂载
sudo mount -o defaults,noatime /dev/sda1 /mnt # SSD优化挂载
sudo umount /mnt                     # 卸载
sudo umount -l /mnt                  # 强制卸载(设备忙时)
sudo mount -o loop image.iso /mnt    # 挂载ISO镜像
永久挂载(/etc/fstab)
Bash 复制代码
# 1. 获取UUID
blkid /dev/sda1

# 2. 编辑fstab
sudo nano /etc/fstab

# 3. 添加条目
UUID=12345678-1234-1234-1234-1234567890ab /data ext4 defaults,noatime 0 2

# 4. 测试并挂载
sudo mount -a

6.5 LVM逻辑卷管理(核心)

PV(物理卷) → VG(卷组) → LV(逻辑卷)

Bash 复制代码
# 物理卷管理
sudo pvcreate /dev/sda1 /dev/sdb1    # 初始化物理卷
sudo pvs                             # 查看所有物理卷
sudo pvdisplay                       # 查看详细信息

# 卷组管理
sudo vgcreate vg0 /dev/sda1 /dev/sdb1 # 创建卷组
sudo vgs                             # 查看所有卷组
sudo vgextend vg0 /dev/sdc1          # 扩展卷组

# 逻辑卷管理
sudo lvcreate -L 20G -n lv0 vg0      # 创建20GB逻辑卷
sudo lvcreate -l 100%FREE -n lv0 vg0 # 使用所有剩余空间
sudo lvs                             # 查看所有逻辑卷

# 扩展逻辑卷(最常用)
sudo lvextend -L +10G /dev/vg0/lv0   # 增加10GB
sudo resize2fs /dev/vg0/lv0          # 扩展ext4文件系统
sudo xfs_growfs /data                # 扩展XFS文件系统(必须挂载后)

6.6 磁盘检查与修复

Bash 复制代码
sudo umount /dev/sda1                # 必须先卸载
sudo fsck /dev/sda1                  # 检查并修复ext4
sudo fsck -y /dev/sda1               # 自动修复所有错误
sudo xfs_repair /dev/sda2            # 修复XFS文件系统

6.7 交换分区管理

Bash 复制代码
# 创建交换文件(无需修改分区表)
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 查看交换空间
sudo swapon --show
sudo free -h

# 永久启用(添加到/etc/fstab)
/swapfile none swap sw 0 0

七、防火墙管理(iptables 详解)

7.1 基础概念

  • :filter(默认)、nat、mangle、raw、security

  • :INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING

  • 动作:ACCEPT、DROP、REJECT、LOG、SNAT、DNAT

7.2 规则查看与管理

Bash 复制代码
sudo iptables -L -n                  # 查看filter表规则(数字形式)
sudo iptables -t nat -L              # 查看nat表规则
sudo iptables -F                     # 清空filter表所有规则
sudo iptables -X                     # 删除所有自定义链

7.3 基础规则配置

Bash 复制代码
# 允许本地回环和已建立连接
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许常用端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT   # SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT   # HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # HTTPS

# 禁止Ping
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# 设置默认策略(⚠️ 先允许SSH再执行!)
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

7.4 NAT配置(软路由/端口转发)

Bash 复制代码
# 开启IP转发
sudo sysctl net.ipv4.ip_forward=1

# SNAT:共享上网
sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

# DNAT:端口转发(外网80→内网192.168.2.100:80)
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.100:80

7.5 规则持久化

Bash 复制代码
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload

八、虚拟机管理(KVM/QEMU/libvirt)

前置依赖安装:

Bash 复制代码
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
# 注销并重新登录

8.1 基础状态查看

Bash 复制代码
virsh list --all                     # 查看所有虚拟机
virsh dominfo vm-name                # 查看虚拟机详细信息
virsh dumpxml vm-name                # 查看XML配置

8.2 虚拟机生命周期管理

Bash 复制代码
virsh start vm-name                  # 启动
virsh shutdown vm-name               # 优雅关机
virsh destroy vm-name                # 强制关机(拔电源)
virsh reboot vm-name                 # 重启
virsh suspend vm-name                # 暂停(挂起到内存)
virsh resume vm-name                 # 恢复
virsh undefine --remove-all-storage vm-name # 删除虚拟机及磁盘

8.3 虚拟机配置管理

Bash 复制代码
virsh edit vm-name                   # 编辑XML配置
virsh setmem vm-name 4194304 --live  # 调整内存为4GB(立即生效)
virsh setvcpus vm-name 4 --config    # 调整CPU为4核(下次启动生效)
virsh autostart vm-name              # 开启开机自启
virsh vncdisplay vm-name             # 查看VNC端口

8.4 磁盘镜像管理(qemu-img)

Bash 复制代码
qemu-img create -f qcow2 disk.qcow2 20G # 创建qcow2格式磁盘
qemu-img info disk.qcow2             # 查看磁盘信息
qemu-img resize disk.qcow2 +10G      # 增加10GB

8.5 快照管理

Bash 复制代码
virsh snapshot-create-as vm-name snap1 "快照描述" # 创建快照
virsh snapshot-list vm-name          # 查看所有快照
virsh snapshot-revert vm-name snap1  # 恢复快照
virsh snapshot-delete vm-name snap1  # 删除快照

8.6 虚拟机克隆

Bash 复制代码
virt-clone --original vm-name --name new-vm --auto-clone # 自动克隆

九、用户与权限管理

Bash 复制代码
sudo adduser username                # 添加用户
sudo deluser username                # 删除用户
sudo usermod -aG sudo username       # 添加到sudo组

sudo groupadd groupname              # 添加组
sudo groupdel groupname              # 删除组

chmod 755 filename                   # 修改文件权限
chmod +x filename                    # 添加执行权限
chown user:group filename            # 修改所有者
chown -R user:group directory        # 递归修改目录所有者

十、新手避坑指南

  1. 永远不要执行 rm \-rf /sudo rm \-rf /\*,会删除系统所有文件

  2. 修改iptables默认策略为DROP前,一定要先允许SSH端口,否则会被远程锁死

  3. 修改systemd单元文件后必须执行 sudo systemctl daemon\-reload

  4. 大于2TB的磁盘必须使用GPT分区表,MBR最大支持2TB

  5. 永久挂载必须使用UUID,设备名可能在重启后变化

  6. fsck只能在卸载状态下执行,挂载状态下会损坏文件系统

  7. 永远不要全局禁用AppArmor,这会移除系统最重要的安全边界

  8. 重要操作前先备份,特别是修改配置文件和操作磁盘时


十一、获取帮助

Bash 复制代码
command --help                       # 显示命令帮助
man command                          # 查看命令手册页
info command                         # 查看命令详细信息
相关推荐
weyyhdke2 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu
lUie INGA2 小时前
ubuntu 安装 Redis
linux·redis·ubuntu
佩洛君2 小时前
Ubuntu22.04系统apt换国内源
linux·运维·ubuntu
工作log3 小时前
从 Ubuntu 22.04 到 ROS 2 Humble 完整环境搭建与 Java 控制指南
java·linux·ubuntu
aq553560013 小时前
Laravel5.X核心特性全解析
ubuntu·debian
深圳市九鼎创展科技15 小时前
MT8883 vs RK3588 开发板全面对比:选型与场景落地指南
大数据·linux·人工智能·嵌入式硬件·ubuntu
闫利朋16 小时前
Ubuntu22.04桌面版安装Cubic2024版本并定制ISO完整教程
ubuntu·自动化的安装系统
烛衔溟19 小时前
TypeScript this 参数类型与全局 this
javascript·ubuntu·typescript
今晚务必早点睡1 天前
Ubuntu 部署 RuoYi-Vue-FastAPI 完整实战指南(含踩坑总结)
vue.js·ubuntu·fastapi