Como verificar se / proc / está montado

8

Como posso verificar se / proc / está montado?

  • Usar o / etc / mtab não é recomendado pode ser inconsistente.

  • Usar / proc / mounts também não é opção como pode não existir se / proc / não está montado (apesar de verificar sua existência pode ser uma maneira de fazer isso verifique.

Qual é a melhor maneira de fazer essa verificação?

    
por freddie 06.07.2011 / 13:41

4 respostas

8

Você pode executar o mount sem nenhum argumento para obter uma lista de montagens atuais. O arquivo /etc/mtab deve ter dados semelhantes, mas como você disse, é possível que isso seja inconsistente com o que é realmente montado no caso de o sistema de arquivos /etc estar confuso, não gravável ou outro programa ter mexido com isto. Você pode obter informações específicas sobre as montagens do processo pedindo a mount para listar todas as montagens do tipo proc da seguinte forma:

mount -l -t proc

Editar: Parece que você pode usar stat para comparar o dispositivo da pasta /proc com o dispositivo de / para dizer, pelo menos, se ALGO está montado lá diferente do sistema de arquivos raiz:

[[ $(stat -c %d%D /proc) != $(stat -c %d%D /) ]] && echo "Something is mounted at /proc"
    
por 06.07.2011 / 13:44
3

Teste a existência de /proc/mounts . A execução de mount não é boa porque, se /proc não for montado, ele retornará dados potencialmente obsoletos de /etc .

Em teoria, pode haver algo mais em /proc . Mas isso é extremamente improvável na prática: se /proc/mounts existir e /proc não for o sistema de arquivos proc , você não poderá confiar em nada sobre o seu ambiente. Se você está realmente preocupado, pode verificar se o tipo de sistema de arquivos é proc : df -PT /proc | awk 'NR==2 && $2=="proc" {print 1}' (requer os utilitários Linux df , não existe uma opção correspondente no Busybox). Por outro lado, em teoria, poderia haver um sistema de arquivos proc montado em um local diferente; não há uma maneira fácil de encontrar isso com comandos shell ( df/proc/mounts para enumerar sistemas de arquivos). Na prática, apenas verifique por /proc/mounts .

    
por 06.07.2011 / 14:35
2

Se você quiser (mais ou menos) garantir que o sistema de arquivos em / proc seja de fato proc em vez de algum outro sistema de arquivos ou uma estrutura de diretório feita para parecer, você pode chamar statfs() e verifique o tipo, 0x9fa0 é o valor para proc.

    
por 06.07.2011 / 17:56
0

Existe uma ferramenta chamada mountpoint disponível em muitas instalações do Linux. O código de saída é 0 se o primeiro argumento for um ponto de montagem.

    
por 14.07.2015 / 19:19