Os sistemas de arquivos "lógicos" não são necessariamente montados na rede. por exemplo, em seu sistema com 70 sistemas de arquivos montados, é provável que a maioria deles sejam sistemas de arquivos correspondentes a recursos do kernel em vez de sistemas de arquivos de rede. Os sistemas de arquivos lógicos incluem sysfs
, proc
, todos os sistemas de arquivos cgroup, tmpfs
, devtmpfs
, etc., que são todos sistemas de arquivos “locais”.
Sistemas de arquivos "não físicos" são identificados pelo kernel em /proc/filesystems
usando nodev
, então você pode usar isso para listar apenas sistemas de arquivos "físicos", usando findmnt
:
findmnt -t $(grep -v nodev /proc/filesystems | paste -sd, - | tr -d \t)
Para contar os sistemas de arquivos, solte o cabeçalho e alimente a saída para wc -l
:
findmnt -n -t $(grep -v nodev /proc/filesystems | paste -sd, - | tr -d \t) | wc -l
É possível montar esses tipos de sistemas de arquivos a partir de arquivos de imagem e outros arquivos que não são dispositivos, até mesmo dispositivos de blocos remotos pela rede; no entanto, esta abordagem lhe dará bons resultados na maioria dos sistemas.
Outra abordagem é começar pelos próprios dispositivos de disco, usando lsblk
; lsblk -f
produzirá a árvore de dispositivos físicos através de quantas camadas forem necessárias para alcançar os sistemas de arquivos montados reais. Você pode combinar isso com as informações acima sobre sistemas de arquivos físicos para listar apenas os sistemas de arquivos que correspondem a um dispositivo de bloco no sistema:
lsblk -f | grep -F -f <(grep -v nodev /proc/filesystems | tr -d \t)
Contando isso dá o resultado desejado:
lsblk -f | grep -F -f <(grep -v nodev /proc/filesystems | tr -d \t) | wc -l