Como obter a lista completa e exata dos sistemas de arquivos montados no Linux?

128

Eu costumo usar mount para verificar quais sistemas de arquivos estão montados. Eu também sei que há alguma conexão entre mount e /etc/mtab , mas não tenho certeza sobre os detalhes. Depois de ler Como verificar se / proc / é montado I fique mais confuso.

Minha pergunta é: Como obter a lista mais precisa de sistemas de arquivos montados? Devo usar apenas mount ou ler o conteúdo de /etc/mtab ou o conteúdo de /proc/mounts ? O que daria o resultado mais confiável?

    
por xanpeng 08.11.2011 / 13:01

4 respostas

125

A lista definitiva de sistemas de arquivos montados está em /proc/mounts .

Se você tiver qualquer forma de contêineres em seu sistema, /proc/mounts listará apenas os sistemas de arquivos que estão em seu contêiner atual. Por exemplo, em um chroot , /proc/mounts lista apenas os sistemas de arquivos cujo ponto de montagem está dentro do chroot. ( Existem maneiras de escapar do chroot , mente )

Há também uma lista de sistemas de arquivos montados em /etc/mtab . Essa lista é mantida pelos comandos mount e umount . Isso significa que, se você não usar esses comandos (o que é muito raro), sua ação (montar ou desmontar) não será gravada. Na prática, é principalmente em um chroot que você encontrará /etc/mtab arquivos que diferem amplamente do estado do sistema. Além disso, as montagens realizadas no chroot serão refletidas no /etc/mtab do chroot, mas não no /etc/mtab principal. Ações executadas enquanto /etc/mtab está em um sistema de arquivos somente leitura também não são registradas lá.

O motivo pelo qual às vezes você gostaria de consultar /etc/mtab em relação a ou além de /proc/mounts é que, como ele tem acesso à linha de comando mount, às vezes é capaz de apresentar informações de maneira mais fácil Compreendo; por exemplo, você vê as opções de montagem conforme solicitado (ao passo que /proc/mounts lista os mount e os padrões do kernel também), e as montagens de ligação aparecem como tal em /etc/mtab .

    
por 09.11.2011 / 01:33
52

A partir do v. 2.18 (julho de 2010) util-linux inclui uma ferramenta que permite a você exibir uma lista de sistemas de arquivos atualmente montados:

findmnt

Você pode alternar da exibição de árvore padrão para a exibição de lista com -l , definir colunas de saída com -o (semelhante a lsblk ), filtrar resultados com base no tipo de sistema de arquivos com -t etc ...

findmnt -lo source,target,fstype,label,options,used -t ext4
SOURCE    TARGET      FSTYPE LABEL OPTIONS                           USED
/dev/sda1 /           ext4   ARCH  rw,noatime,discard,data=ordered  17.6G
/dev/sdb2 /media/DATA ext4   DATA  rw,noatime,discard,data=ordered    44M

Para mais detalhes, leia a página man (e findmnt --help para obter a lista de colunas disponíveis)

    
por 19.02.2016 / 01:03
26

Talvez porque já se passaram 5 anos desde que a pergunta foi respondida, as coisas mudaram. O cat /proc/mounts cria muitas informações com as quais você não se importa. Hoje, IMHO, acho que esta é a solução final.

df -h --output=source,target

quando você lê as páginas do manual, há todos os tipos de opções que você pode fazer, mas é isso que você faz. Por exemplo, para limpar ainda mais os resultados, você pode excluir os tipos de arquivo "tmpfs" com este comando:

df -hx tmpfs --output=source,target

df funciona no nível do sistema de arquivos e não no nível do arquivo.

Os comandos acima também incluirão montagens de rede.

Para ver um pouco mais de informação, use isto:

df -hT

OBSERVAÇÃO Com conexões de rede montadas lentamente, isso pode levar vários minutos!

Se você não tem ou se preocupa com conexões de rede montadas (e você tem permissões de root), isso é ainda melhor:

sudo lsblk -f
    
por 19.02.2016 / 00:18
22

Na maioria das vezes, mount é o método mais conveniente. Para obter uma lista completa e exata dos sistemas de arquivos atualmente montados, leia o conteúdo de /proc/mounts (por exemplo, com cat /proc/mounts ).

Por exemplo, se a montagem / readwrite falhou e foi montada readonly como um fallback, /etc/mtab (que o comando mount lê para saber o que está montado e grava para - se puder) - quando altera o que está montado) não será atualizado para refletir que / (que contém /etc/mtab ) está atualmente montado somente para leitura. Nessa situação, executar mount normalmente diria a você (incorretamente) que / foi montado readwrite.

Em condições normais (ou seja, quando o sistema de arquivos que o contém pode ser gravado), /etc/mtab contém uma lista de sistemas de arquivos atualmente montados. Isso não deve ser confundido com /etc/fstab , que contém uma lista de sistemas de arquivos que devem ser montados automaticamente quando o sistema é inicializado.

É claro que, se o sistema de arquivos /proc virtual não estiver montado, você não poderá ler nenhum dos arquivos virtuais, o que incluiria /proc/mounts . Isso raramente é o caso. Nessa situação, mount é provavelmente sua melhor opção para ver o que está montado.

    
por 08.11.2011 / 22:33