Linux D2 学习笔记:磁盘管理 + 软件包管理 + systemd

0 阅读6分钟


前言:

本篇笔记围绕排查与运维实战,梳理磁盘管理、apt 包管理、systemd 服务管理三大模块。每一条命令说明作用、参数含义,同时对比易混淆工具。

一、磁盘管理

核心目标:快速判断磁盘剩余容量、定位大文件根源、识别磁盘与分区结构。

1. df(disk free):磁盘分区整体概览

  • 作用:从文件系统层面查看所有挂载分区的总容量、已用空间、剩余空间,是判断 磁盘 是否爆满”的首选命令。

  • 常用语法

    df -h    # 人类可读单位(KB/MB/GB)查看所有分区
    df -h /  # 只查看根分区
    df -i    # 查看inode使用率
    
  • 示例在这里插入图片描述

  • 输出字段解读

    第一列: 文件系统(重点区分两类)

    ① /dev/xxx → 磁盘真实分区(存在固态硬盘上)

    /dev/ 是 Linux 所有硬件设备文件存放目录,数据断电不会消失

    ② tmpfs → 临时文件系统(内存虚拟磁盘!!)

    不是硬盘分区,是内核在内存中开辟的临时存储空间。这里面的数据不在物理硬盘,而是在内存 + Swap 交换分区里。电脑断电、重启,里面所有文件会清空,

    最后一列: 挂载点

    挂载点 = 访问这个存储的入口目录。

    / :根目录,/dev/nvme0n1p3 挂载在这里,我的所有系统、家目录 /home/qyc全都在这个分区

    /run:tmpfs 挂载点,系统运行时进程临时文件、pid 文件放这里

    /dev/shm:共享内存目录,程序之间高速通信常用

    /run/user/1000:我的当前用户(uid=1000 qyc)专属临时目录

    /boot/efi:EFI 引导分区挂载位置,开机启动用

  • 注意:统计结果包含「已删除但仍被进程占用的文件」。

2. du(disk usage):统计目录/文件实际占用

  • 作用:遍历目录内所有文件,累加计算实际占用的磁盘空间,用于定位大文件根源。

  • 高频组合命令语法(用于磁盘爆满排查)

    # 统计当前目录下一级项目大小,从大到小排序,取前5
    du -sh ./* | sort -rh | head -5
    

    在这里插入图片描述

  • 参数解释

    • -s:summary,只输出每个下级文件夹总大小
    • -h:人类可读单位
    • sort -rh-r倒序(从大到小),-h同上
    • head -5:只取前5行结果
  • 注意

    • * 通配符不会匹配.开头的隐藏文件/目录
    • 统计系统目录需加 sudo,无权限会导致统计结果偏小

3. lsblk(list block devices):查看磁盘与挂载结构

  • 作用:以树形结构展示所有物理磁盘、分区及挂载点,无需root权限。

  • 语法

    lsblk
    

    在这里插入图片描述

  • 输出关键字段

    • NAME:设备名(nvme0n1=整块磁盘,nvme0n1p1=该磁盘第1个分区,loop设备≠物理硬盘,不要算进磁盘容量,可以grep =v loop过滤掉)
    • SIZE:设备/分区大小
    • TYPE:disk真实的磁盘,part人为的分区
    • MOUNTPOINTS:挂载点,未挂载则为空
  • 注意:新装硬盘在 lsblk 里能看到 disk,但是没有任何分区、没有挂载点,代表硬盘还没分区格式化。

4. fdisk:查看详细分区表

  • 核心作用:列出磁盘分区表底层信息(起始扇区、分区类型、文件系统等)。
  • 常用语法
    sudo fdisk -l
    
    (结果比较长我就不贴了喵)
  • 注意:入门阶段了解即可,fdisk更适配传统MBR分区。

对比:df vs du

命令统计视角数据来源特点
df -h分区整体视角文件系统超级块速度快,包含已删除但被进程占用的文件
du -sh文件累加视角遍历所有文件大小求和速度慢,只统计可见文件

二、软件包管理(apt/dpkg 体系)

Ubuntu 属于 Debian 系:底层 dpkg 管理单个 deb 包,上层 apt 自动解决依赖。

1. apt update:刷新软件源列表

sudo apt update
  • 作用:从软件源服务器拉取最新的软件版本、依赖信息,更新本地软件目录清单。
  • 注意:只更新信息列表,不升级任何软件,就是只是查一下并更新最新的软件包信息,建议安装新软件前先执行,避免找不到包或安装旧版本。;升级软件用 apt upgrade

2. apt install:安装软件包

sudo apt install nginx       # 安装指定软件
sudo apt install -y nginx    # 自动确认所有提示,无需手动输入y
sudo apt install --reinstall nginx  # 重装已安装的软件

这里去浏览器访问localhost可以看到欢迎页了哦

  • 练习后相关卸载命令
    • apt remove nginx:卸载软件,保留配置文件
    • apt purge nginx:彻底卸载,删除配置文件

3. dpkg -l:查询已安装软件

dpkg -l | grep nginx

在这里插入图片描述

  • 作用:列出所有已安装的 deb 包,可以配合 grep 过滤指定软件。
  • 注意
    • ii:正常安装状态
    • rc:软件已删除,配置文件残留

4. which:查找命令可执行文件路径

which nginx

在这里插入图片描述

  • 原理:遍历 PATH 环境变量中的目录,返回第一个匹配的可执行文件路径。
  • **相关命令**:whereis nginx` 可同时查找二进制、源码、帮助手册位置。

5. apt show:查看软件包详情

apt show nginx

在这里插入图片描述 (相关详细信息没有截)

  • 作用:展示软件版本、安装大小、依赖关系、功能描述等完整信息。安装前了解软件用途,排查版本兼容问题。

三、systemd 服务管理

systemd 是 Linux 主流初始化系统(PID=1),负责管理系统服务、开机启动、进程守护、统一日志。

1. systemctl status:查看服务状态

systemctl status nginx

在这里插入图片描述

  • 关键信息
    • Loaded:服务加载状态 + 开机自启状态
      • enabled:开机自动启动
      • disabled:开机不启动
    • Active:当前运行状态
      • active (running):正常运行
      • inactive (dead):未运行
      • failed:启动失败,下方附带报错信息
    • Main PID:服务主进程PID
    • 末尾:服务最新运行日志,快速定位报错

2. 服务启停与重启

systemctl start nginx    # 启动服务
systemctl stop nginx     # 停止服务
systemctl restart nginx  # 重启服务(服务短暂中断)
systemctl reload nginx   # 重载配置,不重启进程(线上环境首选)

这些命令都很简单易懂,自己试一下就ok了

3. 开机自启管理

systemctl enable nginx   # 设置开机自启
systemctl disable nginx  # 取消开机自启

通过设置可以避免每次开机都要systemctl start nginx,减少常用服务的开启

高效组合写法

sudo systemctl enable --now nginx  # 设置开机自启 + 立即启动服务

4. journalctl:统一日志查询

systemd 接管所有服务日志,统一存储管理,无需逐个去 /var/log 找文件。

  • 实时跟踪日志
    journalctl -u nginx -f
    
    • -u nginx:只过滤 nginx 服务单元的日志
    • -f:实时滚动刷新新日志,等同于 tail -f
  • 按时间范围查询
    journalctl -u nginx --since today          # 查看今天的日志
    journalctl -u nginx --since "1 hour ago"   # 查看最近1小时
    journalctl -u nginx -n 20                  # 查看最后20行
    

四、练习

故意改错 nginx 配置(/etc/nginx/nginx.conf 里随便加一行乱码),然后: systemctl status nginx 看报错 journalctl -u nginx 定位到具体错误行 修好它,重启成功

PS:如有错误纰漏之处还请指正,欢迎交流~