Determina se o sistema de arquivos ou a partição está montada RO ou RW via Bash Script?

29

Existe uma maneira fácil de determinar se um sistema de arquivos montado é montado como Somente Leitura ou Leitura-Gravação? Eu estava pensando apenas em canalizar mount , mas achei que poderia ser mais fácil.

    
por Jake Wilson 22.10.2010 / 21:31

7 respostas

41

Este pequeno liner irá aparecer se houver um sistema de arquivos ro.

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

Supondo que você não tenha um sistema de arquivos ro como um CD na unidade, isso é suficiente para alguns tipos básicos de monitoramento e não requer a troca do sistema de arquivos para encontrar o estado atual. Ele também não assume o tipo de sistema de arquivos. Encaixe-o no grep -v iso9660 se quiser manter seus CDs fora do registro.

    
por 11.01.2012 / 21:56
10

A velha pergunta, mas eu encontrei a mesma procurando a mesma ajuda e parece ser encontrada de maneira ainda mais fácil sem a necessidade de criar um arquivo.

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

Naturalmente, o root-ro é montado em ro e o root-rw é rw fs.

    
por 31.01.2013 / 05:18
7

Se o sistema de arquivos estiver montado, copiei para um diretório temporário e tente criar um arquivo. O código de retorno informará se o sistema de arquivos é Somente Leitura ou Leitura-Gravação desde que o sistema de arquivos não esteja cheio (obrigado Willem).

    
por 22.10.2010 / 21:59
2

Acabei de receber este problema e estas são pastas reais ...

Dê uma olhada em / 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 duas partições são mostradas como sendo montadas rw quando se usa apenas o comando mount.

    
por 17.08.2012 / 04:51
2

Com base em uma resposta do flickerdfly , influenciada por um comentário do WhiteKnight

Crie uma função de detector na mosca.

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

use-o para determinar se um caminho está em um fs somente de leitura

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

E elimine-o quando terminar

#dump temp function
unset -f is_readonly;
    
por 08.06.2016 / 09:07
0

Por exemplo, para verificar se a partição raiz está no modo somente leitura:

if [[ ! -z 'mount | grep "on / type ext3 (ro,"' ]]
then
   echo "It's in read-only mode"
fi
    
por 06.06.2011 / 16:09
0

Aqui está a minha solução:

if findmnt ${YOUR_MOUNT_POINT} | awk '{print $4}' | grep "ro,"; then
  echo "Read only!"
fi
    
por 18.09.2018 / 09:27