Solución 1:
Esta pequeña frase emergente mostrará algo si existe un sistema de archivos ro.
grep "[[:space:]]ro[[:space:],]" /proc/mounts
Asumiendo que normalmente no tiene un sistema de archivos ro como un CD en la unidad, es suficiente para algunas tareas básicas de monitoreo y no requiere cambiar el sistema de archivos para encontrar el estado actual. Tampoco asume su tipo de sistema de archivos. Canalícelo en grep -v iso9660 si desea mantener sus CD fuera del registro.
Solución 2:
Pregunta anterior, pero la encontré buscando la misma ayuda y parece que encontré una forma aún más fácil sin la necesidad de crear un archivo.
[ -w /root-rw ] && echo "rw" || echo "ro"
rw
[ -w /root-ro ] && echo "rw" || echo "ro"
ro
Por supuesto, root-ro está montado en ro fs y root-rw es rw fs.
Solución 3:
Si el sistema de archivos está montado, usaría un CD en un directorio temporal e intentaría crear un archivo. El código de retorno le indicará si el sistema de archivos es de solo lectura o de lectura y escritura, siempre que el sistema de archivos no esté lleno (gracias, Willem).
Solución 4:
Acabo de tener este problema y estas son pastas reales...
Eche un vistazo a /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
FYI:estas dos particiones se muestran como montadas rw cuando solo se usa el comando de montaje.
Solución 5:
Basado en la respuesta de Flickerdfly, influenciado por un comentario de WhiteKnight
Cree una función detectora de moscas.
eval "function is_readonly () {
$( grep -P "\sro[\s,]" /proc/mounts | awk '{print "if echo $1 | grep -q \""$2"\"; then return 0;fi"}' )
return 1;}";
utilícelo para determinar si una ruta está en un fs de solo lectura
is_readonly /path/to/file/on/read/only/fs && echo "sorry. can't delete that"
Y deséchalo cuando termines
#dump temp function
unset -f is_readonly;