最直接方式是运行mount | grep ‘挂载点’,查看括号内参数:出现rw表示可读写,ro表示只读;若未列出则未挂载,且/proc/mounts比/etc/fstab更权威反映实时状态。

最直接的方式是运行 mount 命令,然后找目标挂载点那一行的括号内参数。例如:
mount | grep '/home' /dev/sda2 on /home type ext4 (rw,relatime)
只要看到 rw 就表示可读写;出现 ro 则说明当前是只读状态,脚本执行、文件写入等操作都会失败。
-
mount输出中的参数是内核当前实际生效的值,比/etc/fstab更权威 - 如果目标挂载点没出现在
mount输出里,说明它根本没被挂载 - 注意区分大小写:
RW或Ro不合法,实际只会是小写的rw或ro
常见原因不是挂载参数错了,而是文件系统底层异常触发了只读保护,比如 ext4/xfs 在检测到 I/O 错误或元数据损坏时会自动 remount 为 ro —— 此时 mount 输出确实会变成 (ro,relatime),但你可能没注意到这个变化。
- 检查
dmesg日志:dmesg | tail -20,留意是否有EXT4-fs error、journal has been aborted或XFS: write access disabled类错误 - 查看文件系统健康状态:
sudo dumpe2fs -h /dev/sda1 2>/dev/null | grep -i 'state|last mounted'(ext4)或xfs_info /dev/sda1(xfs) - 若确认是自动只读,且无硬件故障,可尝试手动恢复:
sudo mount -o remount,rw /mount/point;但失败说明底层问题未解决
/proc/mounts 是内核维护的原始挂载快照,mount 命令默认从它读取并做格式化输出。绝大多数情况下两者一致,但偶尔会看到差异 —— 典型场景是 systemd 挂载了 automount 单元(如 /proc/sys/fs/binfmt_misc),mount 不显示,而 /proc/mounts 有记录。
- 优先信
/proc/mounts:它是内核视角的“真相”,尤其排查权限问题时更可靠 - 用
awk '$2 == "/mnt/data" {print $4}' /proc/mounts可直接提取挂载选项字段(第4列) - 若发现
/proc/mounts里某挂载点选项是ro,但mount没列出它,说明该挂载已被内核静默卸载或处于异常状态
/etc/fstab 第四列(options)定义了开机默认挂载参数,但它只是“建议”。实际是否生效,取决于内核策略、systemd 单元覆盖、以及运行时是否被手动 remount 过。
- 查
/etc/fstab中对应行:awk ‘\(2 == "/data" {print \)4}’ /etc/fstab,若输出是defaults,则等价于rw,suid,dev,exec,auto,nouser,async - 但
defaults不代表一定rw:某些发行版(如 RHEL/CentOS)在 SELinux enforcing 模式下,对 NFS 挂载会隐式添加noexec或覆盖为ro - 验证是否被 systemd 覆盖:
systemctl show mnt-data.mount | grep -i options(假设挂载点为/mnt/data)
真正决定写入能力的,永远是当前 /proc/mounts 或 mount 输出里的实时 rw/ro 状态,而不是配置文件里写了什么。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/265350.html