mount info para o diretório atual

12

Eu posso fazer df . para obter algumas das informações sobre a montagem em que o diretório atual está, e posso obter todas as informações que eu quero de mount , mas obter muitas informações (informações sobre outras montagens) . Eu posso entender, mas estou me perguntando se existe uma maneira melhor.

Existe algum comando mountinfo tal que mountinfo . dê informações que eu quero (como df . , mas com a informação que mount dá.)

Estou usando o Debian Gnu + Linux.

    
por ctrl-alt-delor 11.08.2014 / 13:51

4 respostas

12

Eu acho que você quer algo assim:

findmnt -T .

Ao usar a opção

-T, --target path
se o caminho não for um arquivo ou diretório de ponto de montagem, findmnt verifica elementos de caminho na ordem inversa para obter o ponto de montagem. Você pode imprimir apenas alguns campos via -o, --output [list] .
Veja findmnt --help para a lista de campos disponíveis.

Como alternativa, você pode executar:

(until findmnt . ; do cd .. ; done)

O problema que você está enfrentando é que todos os caminhos são relativos a uma coisa ou outra, então você só precisa andar na árvore. Toda vez.

findmnt é um membro do pacote util-linux e já existe há alguns anos. Por enquanto, independentemente da sua distro, ela já deve estar instalada na sua máquina Linux se você também tiver a ferramenta mount .

man mount | grep findmnt -B1 -m1
For  more robust and customizable output use
findmnt(8),  especially  in  your   scripts.

findmnt imprimirá todas as informações das montagens sem um argumento de ponto de montagem, e somente isso para seu argumento com um. O -D é a opção df . Sem -D , sua saída é semelhante a mount , mas muito mais configurável. Experimente findmnt --help e veja você mesmo.

Eu coloco em um subshell para que o diretório atual do shell atual não mude.

Então:

mkdir -p /tmp/1/2/3/4/5/6 && cd $_ 
(until findmnt . ; do cd .. ; done && findmnt -D .) && pwd

OUTPUT

TARGET SOURCE FSTYPE OPTIONS
/tmp   tmpfs  tmpfs  rw
SOURCE FSTYPE  SIZE   USED AVAIL USE% TARGET
tmpfs  tmpfs  11.8G 839.7M   11G   7% /tmp
/tmp/1/2/3/4/5/6

Se você não tem a opção -D disponível para você (Não em versões mais antigas do util-linux) então você nunca precisa temer - ela é pouco mais que um switch de conveniência em qualquer caso . Observe os cabeçalhos de coluna que produz para cada chamada - você pode incluir ou excluir aqueles para cada chamada com a opção -o utput. Eu posso obter a mesma saída que -D poderia fornecer:

 findmnt /tmp -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET

OUTPUT

SOURCE FSTYPE  SIZE  USED AVAIL USE% TARGET
tmpfs  tmpfs  11.8G  1.1G 10.6G  10% /tmp
    
por 12.08.2014 / 01:20
1

A maneira Linux / Unix é ter uma caixa de ferramentas de pequenos utilitários que, quando combinados, fornecem os resultados que você procura.

Eles tendem a não ter utilidade em todas as ocasiões. Em vez disso, você tem muitos pequenos utilitários úteis que são combinados com pipes, etc. A vantagem disso é que você pode escrever seu próprio utilitário facilmente se nenhum estiver disponível.

Por exemplo, para obter as informações que você procura, você pode usar:

mount | grep $(df  --output=source . | tail -1)

Se você quiser reutilizar o acima com diretórios diferentes, crie um script:

#!/bin/bash
mount | grep $(df  --output=source $1 | tail -1)

Salve-o como mountinfo e torne-o executável ( chmod +x mountinfo ). Você pode então usá-lo como:

mountinfo .

Se você quiser um sistema que tenha um utilitário para qualquer coisa que não interaja entre si, então um certo Sr. Gates poderá ajudá-lo; -)

    
por 11.08.2014 / 14:29
1

Pode ser um pouco confuso se os pontos de montagem contiverem espaços em branco, mas isso deve funcionar, exceto nos casos em que os pontos de montagem contiverem novas linhas:

#!/bin/sh
mountpoint="$(df -P "$1" | awk '{
    if (NR==1)
        i=index($0,"Mounted on");
    else
        print substr($0,i);
    }')"
mount|grep " on ${mountpoint} type "

df -P gera uma linha para o sistema de arquivos; sem essa opção, df pode produzir duas linhas se o ponto de montagem for longo. O nome do ponto de montagem começa na mesma coluna que o rótulo "Montado em" na linha de cabeçalho.

Depois de obtermos o ponto de montagem, fazemos um grep para ele na saída de mount .

    
por 11.08.2014 / 18:55
1

Eu não sei de um comando, mas você poderia criar uma função. Você pode adicionar o abaixo ao seu .bashrc :

mountinfo () {
  mount | grep $(df -P "$1" | tail -n 1 | awk '{print $1}')
}

Isso executa o comando mount e passa a saída para grep . grep procurará a saída de df -P "$1" | tail -n 1 | awk '{print $1}' e dividi-la:

  • df -P "$1" executará df no argumento passado para a função,
  • tail -n 1 só produzirá a segunda linha, a que contém o partition info.
  • awk '{print $1}' imprimirá a primeira parte dessa linha, que é o número do disco / partição, por exemplo /dev/sda5 . Isso é o que o grep procurará no comando mount e gerará a saída.

Envie seu arquivo .bashrc para aplicar as alterações ou faça logout e login novamente.

Agora, se você executar mountinfo . , obterá a saída desejada.

    
por 11.08.2014 / 14:41