desenv-web-rp.com

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

Eu normalmente uso 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 dos detalhes. Depois de ler Como verificar se/proc/está montado Fico mais confuso.

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

168
xanpeng

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

Se você tiver qualquer forma de contêiner no seu sistema, /proc/mounts lista apenas os sistemas de arquivos que estão no 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, lembre-se. )

Há também uma lista de sistemas de arquivos montados em /etc/mtab. Esta lista é mantida pelos comandos mount e umount. Isso significa que, se você não usar esses comandos (o que é bastante raro), sua ação (montar ou desmontar) não será registrada. 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 executadas no chroot serão refletidas nas /etc/mtab mas não no principal /etc/mtab. Ações executadas enquanto /etc/mtab está em um sistema de arquivos somente leitura também não são gravados lá.

A razão pela qual você às vezes deseja consultar /etc/mtab em preferência a ou além de /proc/mounts é que, por ter acesso à linha de comando mount, às vezes é possível apresentar informações de uma maneira mais fácil de entender; por exemplo, você vê as opções de montagem conforme solicitado (enquanto /proc/mounts lista os mount e os padrões do kernel também), e montagens de ligação aparecem como tais em /etc/mtab.

150

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

findmnt

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

findmnt -lo fonte, destino, fstype, rótulo, opções, usado -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)

81
don_crissti

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

df -h --output=source,target

quando você lê as páginas do manual, existem 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 incluirão montagens de rede também.

Para ver um pouco mais de informações, use isto:

df -hT

NOTE Com conexões de rede montadas lentamente, isso pode levar alguns 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
37
Rick

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 montar / a leitura e gravação falhou e foi montada somente como um substituto, /etc/mtab (do qual o comando mount lê para informar o que está montado e grava - se puder - quando altera o que está montado) não seria atualizado para refletir que / (que contém /etc/mtab) está atualmente montado somente leitura. Nessa situação, executar mount normalmente informa (incorretamente) que / foi montado como readwrite.

Sob 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 é iniciado.

Claro, se o /proc o sistema de arquivos virtual não está montado, então você não pode ler nenhum dos arquivos virtuais nele, o que incluiria /proc/mounts. Isso muito raramente é o caso. Nessa situação, mount é provavelmente a melhor opção para ver o que está montado.

23
Eliah Kagan