Mostrando apenas pontos de montagem "interessantes" / filtragem de tipos não interessantes


21

Eu costumava mountmostrar unidades montadas, não quero ver as não tão interessantes (ou seja, não físicas). Então, eu costumava ter um script mntque fazia:

mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts) '

no Ubuntu 8.04 e mostrou-me ext3e reiserfsmontar única pontos. Essa linha é realmente comentada e agora eu uso (para Ubuntu 12.04):

mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts|debugfs|rpc_pipefs|nfsd|securityfs|fusectl|devtmpfs) '

para mostrar apenas minhas partições ext4e zfs(deixei cair usando reiserfs).

Agora estou me preparando para o Ubuntu 14.04 e o script deve ser estendido novamente (cgroup, pstore). Existe uma maneira melhor de fazer isso sem precisar estender o script? Estou interessado apenas em discos físicos montados e montados em unidades de rede ( nfs, cifs).


df -Th | grep -Ev '(udev | tmpfs)'
Nadir

alias mnt="mount | grep '^/dev'"Eu uso isso para mostrar apenas os "dispositivos".
pcarvalho 13/01

Respostas:


6

A -topção mounttambém funciona ao exibir pontos de montagem e obtém uma lista separada por vírgula dos tipos de sistema de arquivos:

mount -t ext3,ext4,cifs,nfs,nfs4,zfs

Não tenho certeza se essa é uma solução melhor . Se você começar a usar (por exemplo btrfs) e esquecer de adicioná-lo à lista, não o verá e talvez não perca. Prefiro filtrar ativamente qualquer novo sistema de arquivos "desinteressante" quando eles aparecerem, mesmo que essa lista esteja ficando longa.

Você pode tentar ativamente apenas grepos pontos de montagem interessantes semelhantes ao que o @Graeme propôs, mas como também está interessado nas montagens NFS / CIFS (que não começam com /), faça o seguinte:

mount | grep -E --color=never  '^(/|[[:alnum:]\.-]*:/)'

( --coloré necessário suprimir a coloração da inicial /nas linhas encontradas). Como Graeme apontou, a montagem baseada em nome de compartilhamentos NFS também deve ser permitida. O padrão seleciona linhas começando com uma /ou qualquer combinação de "a-zA-Z0-9". seguido por :/(para montagens NFS).


A segunda opção parece o que eu quero.
Johran

As nfsmontagens sempre aparecem com o endereço IP ou também pode haver nomes de host? Nesse caso, isso não vai funcionar.
Graeme

@ Graeme Você está certo (demorei um pouco para verificar como a montagem do NFS não está funcionando). Atualizada.
Anthon

Hostnames pode ter um hífen também :)
Graeme

1
considere tambémfindmnt
ctrl-alt-delor 25/11/19

38

Não use mount.

De man mount:

  • A listagem.
    • O modo de listagem é mantido apenas para compatibilidade com versões anteriores.
    • Para saída mais robusta e personalizável, use findmnt(8) , especialmente em seus scripts.
    • Observe que os caracteres de controle no nome do ponto de montagem são substituídos por ? .

Use findmnt, como sugere a documentação. Aqui estão algumas opções interessantes, conforme descrito por findmnt --help:

  • -i ou --invert
    • inverter o sentido de correspondência
  • -R ou --submounts
    • imprimir todos os submounts para os sistemas de arquivos correspondentes
  • -t ou --typeslist
    • limitar o conjunto de sistemas de arquivos por tipos FS

Esses são apenas alguns dos muitos filtros que você pode aplicar na linha de comando.

man findmnt
  • EXEMPLOS
    • findmnt --fstab -t nfs
    • Imprime todos os sistemas de arquivos NFS definidos em /etc/fstab.
    • findmnt --fstab /mnt/foo
    • Imprime todos os /etc/fstabsistemas de arquivos em que o diretório do ponto de montagem está /mnt/foo. Também imprime --bindmontagens onde /mnt/foohá uma fonte.

Você pode usar:

findmnt -it sysfs,cgroup,proc,devtmpfs,devpts,pstore,debugfs,hugetlbfs,mqueue,configfs

Isso deve filtrar todos os pseudo-sistemas de arquivos, acredito.

Ainda assim, você pode fazer o mesmo com mount:

mount -t nosysfs,nodevtmpfs...

Possivelmente, uma maneira melhor pode ser usar um dos seguintes comandos, que findmnt --helpdescreve como observado:

  • findmnt -D ou findmnt --df
    • Imite a saída de df(1) . Esta opção é equivalente a, -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGETmas exclui todos os pseudo-sistemas de arquivos. Use --allpara imprimir todos os sistemas de arquivos.

Você pode adicionar campos de lista aos padrões com findmnt -Do+field,+field.... Você pode especificar sua própria lista de campos usando apenas os sistemas de arquivos que -Dserão mostrados ao omitir o +mesmo findmnt -Dofield,field.


Obrigado, eu não tinha ideia de que existia! Para filtrar os sistemas de arquivos, você pode usar$(awk '/nodev/ { print $2 }' /proc/filesystems | paste -sd,)
deltab 2/15

@deltab - se você estiver filtrando por opção de montagem, também poderá fazê-lo findmnt. Mas nodevnão é necessariamente uma opção restrita a sistemas de arquivos não-pseudo. Por outro lado, findmnt -Dterá apenas esses.
mikeserv

1
como posso lhe dar mais do que um +1 por isso? Ótimo, ótimo encontrar!
insaner

4
@insaner - isso é mais do que suficiente, garanto. Estou muito lisonjeado, obrigado. Mas, a propósito, se findmntvocê o surpreendeu, talvez você queira dar uma util-linuxolhada no pacote - a libmount e os amigos do linux viram algumas atualizações bastante significativas em um passado não muito distante. Há algumas coisas bem legais lá. Você também pode dar uma olhada nos namespaces de montagem e nas árvores de montagem compartilhadas.
Mikeerv

2
@insaner - apenas como exemplo, para basicamente todos os casos em que você pode querer usar um link simbólico, uma --bindmontagem o fará melhor. Não apenas você pode simplesmente rastreá-lo e revertê-lo, como também gerenciar toda a árvore de indireção no fstab. E - com namespaces (consulte unsharee nsenter), você pode apresentar diferentes visões do sistema de arquivos por processo. É completamente aceitável, por exemplo, --bindmontar /dev/nullsobre um arquivo arbitrário apenas para um processo abitrário, fazê-lo sem acesso root se o fstab definir a ação e com findmnt --poll -N<pid>o estado atual da montagem a seu critério.
mikeserv

8

E se:

mount | grep '^/[^/]'

Os pontos de montagem relacionados aos discos físicos sempre começam com um, /já que o primeiro campo é o caminho para um dispositivo. cifsmontagens começarão com //excluir linhas com um segundo /para ignorá-las.

Atualizar

Eu interpretei mal a pergunta, achei que você queria excluir cifs e nfs. Tente isso:

 mount | grep -E '^[^ ]*[/:]'

1
Isto não está a funcionar. NFS não é mostrado em tudo, mesmo se eliminar as [^] para incluir CIFS montagens Estou interessado na
Johran

@Johran, atualizado
Graeme

4

Tarde na festa, mas

Não quero ver os não tão interessantes (ou seja, não físicos)

Se por físico , você quer dizer dispositivos de bloco conectados ao seu PC, vá com

$ lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sdb             8:16   0 238.5G  0 disk  
├─sdb1          8:17   0   100M  0 part  /boot
├─sdb2          8:18   0     1G  0 part  
├─sdb3          8:19   0    45G  0 part  /
└─sdb4          8:20   0 192.4G  0 part  
  └─ssdhomecr 254:0    0 192.4G  0 crypt /home
sdi             8:128  0 931.5G  0 disk  
├─sdi1          8:129  0   801G  0 part  
│ └─test      254:2    0   801G  0 crypt /mnt/esata
└─sdi2          8:130  0 130.6G  0 part  

Costumo usá-lo com a --fs/-fopção (informações do sistema de arquivos)

$ lsblk -f 
NAME          FSTYPE      LABEL  UUID                                 MOUNTPOINT
sdb
├─sdb1        ext2        bootp  7cf4f62a-1111-4e2f-7536-4fc5ad38bd2c /boot
├─sdb2        swap        swapp  4aa6d4ae-11e7-4a35-8bf3-ab42313aca62
├─sdb3        ext4        sysp   b23338ad-5a4b54i54-a842-8164-a9a9a2a /
└─sdb4        crypto_LUKS        112c40c9-7fdd-4158-895c-5344d24c4a6d
  └─ssdhomecr ext4        homecr fc8a92cb-124f-4a0d-b88e-2055c06ffc3g /home
sdi
├─sdi1        crypto_LUKS        a7c9fg87-6962-43e3-b8c6-7605b181630e
│ └─test      ext2        esata1 124657dc-671a-4b7f-b8a7-b64d5341cabe /mnt/esata
└─sdi2        crypto_LUKS        1c5846bb-ce7e-4cbe-bb0a-b687758ea1dc

lsblkfaz parte do util-linux . Obviamente, não mostrará fusíveis ou montagens de rede.


1

Não use o -vinterruptor.

Usar:

mount | grep -Ew 'ext4|ext3'

Isso mostrará apenas ext4 e ext3. Se você deseja visualizar mais sistemas de arquivos, adicione-os ao regex.

Por exemplo, para visualizar montagens ext3, ext4, cifs e nfs, use:

mount | grep -Ew 'ext4|ext3|cifs|nfs'


1
O segundo também será exibido nfsd on /proc/fs/nfsd type nfsd (rw)no meu sistema, o OP não quer isso, é por isso que type nfsd é filtrado.
Anthon

@ Anthon Obrigado por apontar isso. Eu estava tentando mostrar o ponto de não usar o -v. Eu atualizei minha resposta. A propósito, para o que o OP está tentando alcançar, seu método (usando mount -t) é o melhor.
Sree

1
Não tenho certeza se -té melhor eu mesmo. Que eu esqueceria de expandir (se eu começar a usar btrfsou xfs) é improvável, mas esquecer vfat( iso9660) para unidades físicas montadas automaticamente (USB) é real. Prefiro filtrar algo do que sentir falta de um (invisível) que quero.
Anthon

1

É possível obter uma lista do sistema de arquivos usando um dispositivo de bloco como armazenamento de backup /proc/filesystems. Por exemplo, você pode usá-lo da seguinte maneira:

mount -t "$(grep -v '^nodev' /proc/filesystems | cut -f2 | paste -s -d ,)"

Como você deseja que os sistemas de arquivos sejam suportados por um dispositivo de bloco e sistemas de arquivos de rede, isso não elimina completamente a necessidade de manter uma lista manualmente. Mas então você teria apenas que manter uma lista dos sistemas de arquivos de rede que você usa.

Não sei como /proc/filesystemstratará os sistemas de arquivos que usam vários dispositivos de bloco para fazer backup de armazenamento (ou seja, sistemas de arquivos com RAID embutido no sistema de arquivos). Você pode ter que tratar aqueles especiais.


0

Melhor eu uso como um alias:

df -Th | grep -Ev '(udev | tmpfs)' '

saída de amostra:

# df -Th| grep -Ev '(udev|tmpfs)'
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/md3       ext4       39G  792M   36G   3% /
/dev/md2       ext4      487M   32M  426M   7% /boot
/dev/sda1      vfat      510M  152K  510M   1% /boot/efi
/dev/md5       ext4      7.2T  311M  6.8T   1% /var

mas algumas das respostas acima são muito úteis, posso mudar:

findmnt --df

lsblk -f

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.