Como descobrir onde um determinado subdiretório é montado?

2

Digamos que /var/log seja /dev/sda2 e /var/spool faça parte de /var , que faz parte de / , que é /dev/sda1 .

Agora eu gostaria de emitir um comando como

$ sudo get_mountpoint_of /var/spool

e obtenha a resposta correta:

/var/spool is part of / and is mounted on /dev/sda1
    
por Carsten 06.12.2015 / 16:42

3 respostas

2

em um sistema linux que você pode fazer:

findmnt -nvoSOURCE -T /*some/path

... para imprimir apenas o dispositivo de origem para qualquer arquivo referido por /*some/path .

lista de opções:

  • -n

    • omite os cabeçalhos das colunas
  • -oSOURCE

    • seleciona apenas a coluna de saída do dispositivo SOURCE , embora haja muitas outras.

    • acrescente ,TARGET para listar a coluna de ponto de montagem também.

  • -v

    • omite a parte [...] de qualquer possível /dev/device[/bindmnt] resultado
  • -T

    • instrui findmnt a retroceder por meio de seu argumento --target até encontrar um ponto de montagem válido antes de gerar relatórios.

para mais informações:

man findmnt
    
por 06.12.2015 / 23:25
1

Você não precisa de sudo para fazer isso. Você poderia escrever um script que fizesse "df" para o ponto de partida e ler o ponto de montagem a partir da saída. Se o ponto de montagem não for "/", seu script será recorrente, perguntando onde esse foi montado.

Por exemplo, na máquina em questão, tenho

$ df /var/log
Filesystem                                             1K-blocks     Used Available Use% Mounted on
/dev/disk/by-uuid/8a1efcd1-0d32-4674-aa7a-c24c2cd924fd  19751804 12437492   6310948  67% /

Para generalidade, seu script teria que reconhecer que (para este exemplo), as informações do disco podem ser gerenciadas pelo LVM ou pelo udev, e obter detalhes para esse provavelmente requer sudo ). / p>

O caso apresentado pelo OP é mais simples, é claro. Para a mesma máquina, eu tenho um sistema de arquivos em um dispositivo de disco:

$ df /users
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sdb1        8255928 5548304   2288248  71% /users

e novamente, o script teria apenas que olhar para a saída de "df" para ver se terminaria, ou recorreria, perguntando onde esse estava montado.

    
por 06.12.2015 / 16:52
1

Para informações sobre pontos de montagem

df -P file/goes/here | tail -1 | cut -d' ' -f 1 

Para "parte de" informações

df /mountpointFromTheLastCommand | tail -1 | awk '{print $6}'

Exemplo:

[root@xxx ~]# df -P /root/download/ | tail -1 | cut -d' ' -f 1
/dev/sda2
[root@xxx ~]# df /dev/sda2 | tail -1 | awk '{print $6}'
/

E com essas informações, você pode dizer que / root / download é parte de / e está montado em / dev / sda2 =]

Esta é a ideia, você pode otimizá-lo e torná-lo em uma linha com a saída que você deseja.

    
por 06.12.2015 / 22:42

Tags