Estou escrevendo um instalador em bash. O usuário irá para o diretório de destino e executará o script de instalação, portanto, a primeira ação deve ser verificar se há espaço suficiente. Sei que o df relatará todos os sistemas de arquivos, mas gostaria de saber se há uma maneira de obter o espaço livre apenas para a partição em que o diretório de destino está.
Editar - a resposta que eu dei
df $PWD | awk '/[0-9]%/{print $(NF-2)}'
Um pouco estranho porque df parece formatar sua saída para caber no terminal, então, com um nome de ponto de montagem longo, a saída é deslocada para baixo em uma linha
-P
bandeira paradf
obter tudo em uma linha.du -hs .
para ver o espaço em disco em uso para o diretório atual.Respostas:
Sim:
para o diretório atual.
se você deseja verificar um diretório específico.
Você também pode verificar o
stat(1)
comando, se o seu sistema o tiver. Você pode especificar formatos de saída para facilitar a análise do seu script. Aqui está um pequeno exemplo:fonte
-k
. (coreutils df padroniza para blocos de 1k, então você está bastante seguro no Linux - mas se você tem coreutils, você temstat
, e isso é ainda mais seguro - nenhuma análise necessária).%a*%s
vez de%a*%S
. Não tenho certeza se isso é uma diferença ou um erro de digitação.%S
(maiúsculo) de acordo com a página de manual do RedHat. Não consigo encontrar um sistema de arquivos%s != %S
nos poucos RedHats que tenho acesso, portanto, não posso verificar :-(df
comando: relatar o uso de espaço em disco do sistema de arquivosdu
comando: Estimar o uso do espaço no arquivoDigite
df -h
oudf -k
para listar o espaço livre em disco:OU
du
mostra quanto espaço um ou mais arquivos ou diretórios estão usando:A
-s
opção resume o espaço que um diretório está usando e a-h
opção fornece saída legível por humanos .fonte
Eu acho que isso deveria ser um comentário ou uma edição para a resposta da ThinkingMedia sobre esta questão ( verifique o espaço livre em disco para a partição atual no bash ), mas eu não tenho permissão para comentar (não tenho repetições suficientes) e minha edição foi rejeitada (motivo: "deve ser um comentário ou uma resposta"). Então, por favor, poderes do universo SO, não me condenem por repetir e consertar a "resposta" de outra pessoa. Mas alguém na internet errou! ™ e não me deixou consertar.
O código
tem uma falha substancial: Sim, a saída será
50G
gratuita como 50 - mas também será impressa5.0M
como gratuita como 50 ou3.4G
como 34 ou15K
como 15.Para criar um script com o propósito de verificar uma certa quantidade de espaço livre em disco, você precisa saber a unidade que está verificando. Remova-o (como
sed
no exemplo acima) os números não fazem mais sentido.Se você realmente deseja que funcione, terá que fazer algo como:
Além disso, para um instalador,
df -k $INSTALL_TARGET_DIRECTORY
pode fazer mais sentido do quedf -k "$PWD"
. Finalmente, observe que o--output
sinalizador não está disponível em todas as versões do df / linux.fonte
--output=avail
você obtém o tamanho em bytes desta forma.
fonte
--output=avail
Um exemplo completo para alguém que pode querer usar isso para monitorar um ponto de montagem em um servidor. Este exemplo verificará se / var / spool está abaixo de 5G e enviará um e-mail para a pessoa:
fonte
Para saber o uso do diretório específico em GB ou TB no Linux, o comando é,
df -h / dir / inner_dir /
df -sh / dir / inner_dir /
e para saber o uso do diretório específico em bits no linux o comando é,
df-k / dir / inner_dir /
fonte
Digite no shell de comando:
ou
ou
Ele mostrará a lista de espaços livres em disco para cada ponto de montagem.
Você também pode mostrar / visualizar uma única coluna.
Tipo:
Nota: aqui, 3 é o número da coluna. Você pode escolher qual coluna você precisa.
fonte