O que é uma maneira fácil de ver se um ponto de montagem foi compartilhado?

3

mount tem uma opção --make-shared conforme descrito aqui . No entanto, como descobrir se um ponto de montagem específico foi compartilhado?

    
por Robin Green 14.05.2011 / 22:08

1 resposta

3

O Linux expõe informações sobre sistemas de arquivos montados em /proc/mounts . As opções de compartilhamento são muito recentes para serem exibidas nesse arquivo, mas aparecem em /proc/self/mountinfo ¹. A documentação para este arquivo está em filesystems/proc.txt na documentação do kernel. O arquivo é gerado por show_mountinfo in fs/namespace.c . Uma linha de amostra é assim:

42 18 98:0 / /mount_point rw shared:1 - ext3 /dev/sda1 rw,errors=continue
                             ^^^^^^^^

O formato dos primeiros 6 campos é fixo. Em seguida, aparecem zero ou mais campos marcados, como shared:GROUP , master:GROUP , propagate_from:GROUP ou unbindable , indicando a função da montagem em um grupo de pares, se houver. O - introduz a parte específica do sistema de arquivos, sempre composta do nome do tipo de sistema de arquivos, nome do dispositivo e opções de montagem específicas do sistema de arquivos.

Assim:

</proc/self/mountinfo awk -vmount_point='/mount/point' '
$5 == mount_point {
    i = 7;
    while ($i != "-") {if ($i ~ /^shared:/) exit 0; ++i}
    exit 1;
}'

¹ Em kernels Linux recentes, cada processo tem seu próprio namespace de sistema de arquivos e /proc/mounts é um link simbólico para /proc/self/mounts .

    
por 14.05.2011 / 23:14

Tags