确定文件系统或分区是通过Bash脚本挂载RO还是RW?

有没有一种简单的方法来确定一个安装的文件系统是否安装为只读或读写? 我只是在想pipe道mount但我认为可能有一个更简单的方法。

如果一个ro文件系统存在,这个小单行将popup一些东西。

 grep "\sro[\s,]" /proc/mounts 

假设驱动器中通常没有像CD那样的ro文件系统,那么对于某些基本的监视types的东西就足够了,并且不需要改变文件系统来查找当前状态。 它也不会假定你的文件系统types。 如果你想保持你的CD不在logging中,把它pipe理成grep -v iso9660。

老问题,但我遇到了它寻找相同的帮助,似乎find更简单的方法,而无需创build文件。

  [ -w /root-rw ] && echo "rw" || echo "ro" rw [ -w /root-ro ] && echo "rw" || echo "ro" ro 

当然,root-ro是ro安装的,而root-rw是rwfs。

如果文件系统被挂载,我会cd到一个临时目录并尝试创build一个文件。 如果文件系统不是满的,返回代码将告诉您文件系统是只读还是读写(感谢Willem)。

我刚刚有这个问题,这些是真正的糊状物…

看看/ proc / mounts –

 egrep " ro,|,ro " /proc/mounts /dev/sda3 / ext4 ro,seclabel,relatime,barrier=1,data=ordered 0 0 /dev/sda5 /var ext4 ro,seclabel,relatime,barrier=1,data=ordered 0 0 

仅供参考 – 当使用mount命令时,这两个分区显示为正在挂载rw。

根据一个flickerdfly的答案 ,受WhiteKnight评论的影响

创build一个探测器function飞。

 eval "function is_readonly () { $( grep -P "\sro[\s,]" /proc/mounts | awk '{print "if echo $1 | grep -q \""$2"\"; then return 0;fi"}' ) return 1;}"; 

用它来确定一个path是否只读fs

 is_readonly /path/to/file/on/read/only/fs && echo "sorry. can't delete that" 

完成后处置

 #dump temp function unset -f is_readonly; 

例如,要检查根分区是否处于只读模式:

 if [[ ! -z `mount | grep "on / type ext3 (ro,"` ]] then echo "It's in read-only mode" fi