GNU/Linux >> Tutoriales Linux >  >> Linux

¿Determinar si el sistema de archivos o la partición está montado RO o RW a través de Bash Script?

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;

Linux
  1. ¿Se puede conectar un script Bash a un archivo?

  2. Bash Script:¿Comprobar si un archivo es un archivo de texto?

  3. ¿Ejecutando un archivo de script sobre Ssh a través de Sudo?

  4. ¿Cómo verificar la subcadena en Shell Script Bash?

  5. ¿Cómo sé el nombre del archivo de script en un script Bash?

35 ejemplos de secuencias de comandos Bash

¿Cómo resaltar los scripts de Bash en Vim?

Cómo incluir un archivo en un script de shell bash

script bash agrega texto a la primera línea de un archivo

Compara sumas md5 en script bash

Cómo hacer grep para Unicode en un script bash