linux中检查磁盘挂载状态应优先用findmnt命令,因其输出稳定、支持精准匹配;其次可用/proc/mounts判断只读等选项,df用于路径兜底验证,须避免仅依赖目录存在性判断。

在 Linux 条件判断中检查磁盘挂载状态,核心是用命令输出是否为空、是否匹配预期值来驱动 if 逻辑。不依赖 GUI 或交互,纯命令行可脚本化,关键在于选对命令、抓准字段、避开常见陷阱(如挂载点存在但未真正挂载、只读误判等)。
用 findmnt 判断挂载点是否存在且有效
findmnt 是最推荐的工具——它专为程序解析设计,输出稳定,支持精准匹配,且默认跨 /proc/mounts、/etc/fstab 和内核状态统一查询。
if findmnt /mnt/data > /dev/null; then echo "已挂载"; else echo "未挂载"; fi- 检查是否以读写方式挂载:
if findmnt -o SOURCE,TARGET,FSTYPE,OPTIONS /mnt/data | grep -q "rw,"; then echo "读写挂载"; fi - 验证挂载设备是否为指定分区:
if findmnt -n -o SOURCE /mnt/data | grep -q "^/dev/sdb1$"; then echo "来自 sdb1"; fi(-n去掉表头,-o SOURCE只取设备名)
用 /proc/mounts 精确提取挂载选项(尤其判断只读)
/proc/mounts 是内核级真实状态,比 mount 更可靠,适合判断 ro、rw 等关键选项。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 检查是否只读:
if awk '$2 == "/mnt/backup" && $4 ~ /ro[,$]/ {exit 0} END {exit 1}' /proc/mounts; then echo "只读"; else echo "非只读"; fi - 更简洁写法(需 GNU awk):
awk -v mp="/mnt/backup" '$2 == mp && /ro[,$]/ {found=1; exit} END {exit !found}' /proc/mounts - 注意:不能只靠
grep ro /proc/mounts,可能误匹配其他字段;必须限定第二列是目标挂载点,第四列含ro
用 df 验证挂载点路径是否实际生效
df 虽主要用于空间统计,但它能直接反映“某路径是否落在一个已挂载文件系统上”,适合快速兜底验证。
- 判断目录是否属于独立挂载点(而非父目录继承):
if df --output=source,target /mnt/nas | tail -n +2 | grep -q "/mnt/nas$"; then echo "独立挂载"; fi - 配合退出码判断有效性:
if df /mnt/external > /dev/null 2>&1; then echo "路径可访问且已挂载"; else echo "路径无效或未挂载"; fi - 注意:
df /path成功只说明该路径所在文件系统已挂载,不保证/path就是挂载点本身(比如/mnt/data/log成功,不代表/mnt/data是挂载点)
组合校验:避免假阳性(挂载点目录存在 ≠ 已挂载)
仅检查目录是否存在([ -d /mnt/disk ])完全不可靠。应至少组合两个维度:
- 先确认挂载点目录存在且为空(或预期结构):
[ -d /mnt/disk ] && [ -z "$(ls -A /mnt/disk 2>/dev/null)" ] - 再确认内核已挂载:
findmnt /mnt/disk > /dev/null - 完整示例:
if [ -d /mnt/disk ] && findmnt /mnt/disk > /dev/null; then
echo "挂载点就绪";
else
echo "挂载异常:目录缺失或未挂载";
fi










