Eu sei que df -hl
gera uma lista de todas as minhas partições com seu tamanho, uso como porcentagem e espaço disponível.
Se eu quisesse exibir apenas o tamanho e o uso como uma porcentagem sda2
e sda3
, por exemplo, como eu poderia dizer ao Linux (Ubuntu) para verificá-los, somar e mostrá-los?
ubuntu
command-line
user32398
fonte
fonte
Respostas:
Para
df
calcular totais, use a--totals
opção Se você deseja os totais apenas em algumas unidades selecionadas, especifique-os como argumentos.Exemplos (e saída do meu computador)
Este é o total para todas as montagens locais:
Restringindo a algumas unidades (observe que, se o caminho especificado não for um ponto de montagem exato, será utilizado o ponto de montagem contendo o mais próximo [consulte a observação no final] ):
ou usando
dev
nomes:Personalização adicional
Se você deseja listar todas as montagens, exceto as 'especiais', pode usar a
-x
opção para excluir por tipo de partição. (Use a-T
opção para mostrar os tipos.)Pessoalmente, para uso interativo, eu uso o seguinte alias do bash (adicionado a
~/.bash_aliases
) para excluir as montagens 'não-físicas'.Nota
A especificação de caminhos nos pontos de montagem pode, em algum momento, produzir resultados diferentes, especificando o caminho exato para o ponto de montagem. Por exemplo, no meu laptop, eu uso
sshfs
para montar meu servidor de arquivos (local).A raiz do servidor (
/
) está montada em~/.server-root
. No entanto, no servidor, os discos estão montados/disks/*
, dos quaisdf
(no laptop) não 'sabem'.Evidentemente,
df
pode-se listar o uso do disco nas diferentes montagens no servidor, se houver caminhos adequados. No entanto, mostra o mesmo "Sistema de arquivos" e "Montado em" para todos os caminhos, pois (acredito) esse é o único ponto de montagem (relacionado a estasshfs
montagem) na tabela local de montagem do kernel.Outra coisa: não está realmente relacionado à pergunta, mas relacionado a uma resposta anterior à pergunta.
Adicionar números com um
awk
script (ou similar), como algumas respostas postadas anteriormente, não é uma boa ideia ao usar o-h
sinalizador. Isso ocorre porque é necessário um tratamento especial. Você não pode simplesmente fazersize+=$2;
por um campo que está418M
em uma linha e12G
em outra e obter algo útil com isso…Por exemplo
awk
, adicionando500M
aos10.2G
rendimentos510,2 de quê?
Há claramente um problema aqui. Portanto, apenas como uma dica para lembrar , ao fazer cálculos (automatizados) sobre a saída de
df
(e outros que podem usar números 'legíveis por humanos' ) . Certifique-se de não usar o-h
sinalizador e de que a entrada do script de cálculo seja normalizada (por exemplo, bytes, blocos, KBs ou qualquer outra coisa) e faça o 'display scaling' no final. Não é difícil, na maioria das linguagens de script e de programação, adicionar algo como:em que o valor está em bytes e o limite é da ordem de 1000. O resultado desse método é que você pode ajustá-lo facilmente para produzir valores impressos (excluindo o prefixo) no intervalo desejado e com vários dígitos significativos para o seu escolhendo. Comparado ao caso com utilitários padrão com
-h
comutadores, em que o formato geralmente é fixo.Obviamente, esse cálculo geralmente pode ser mais eficiente e / ou elegante, mas isso é uma pergunta para o idioma específico em que está escrito. Francamente, se for usado em um script de usuário que é executado apenas agora e depois para visualizar interativamente algumas informações, a eficiência não é realmente uma preocupação.
fonte
Eu acho que você queria a soma de ambos
size
euse%
fonte
size+=$1
) para essa pergunta. Este método não é realmente compatível com a-h
opção dedf
.Você usaria uma ferramenta como
awk
:Onde:
/^\/dev\/sd[ab]/
é um padrão para filtrar apenas as linhas que começam com/dev/sda
ou/dev/sdb
{ sum+=$5 }
adicione o quinto campo para quaisquer correspondências do padrão acimaVocê pode encontrar algumas
awk
referências úteis no wiki do Awk.info .fonte
fonte
size
,% used
eavailable
. Não apenas% usado. Também tem @mdpc um método melhor para destacar a unidade, mas se você queria padrão de jogo awk pode fazer isso:df -hl | awk '/sda2/{print $2,$5,$4}'
Se você quisesse com alertas, eu o faço com IFTTT, Telegram And WebHooks (que é tudo grátis)
fonte