Por que os comandos “df” e “du” mostram um uso diferente do disco?

26

Não consigo acessar o sistema ubuntu no meu pc, a mensagem de erro: " o sistema está executando no modo de gráficos baixos " e tentei alguns comandos que procurei na internet.

Eu descobri um problema parece que não há espaço em disco disponível. Eu usei os comandos " df " e " du " para verificar, os resultados são os seguintes:

du -j --max-depth=1
23G  ./home
3.3G ./usr 
...... 
28G

e

df -Th 
filesystem   Type   size    used   available   use%    mounted on 
/dev/sda5    ext4   68G     68G    0           100%    /

como eu limparia o sistema para mais espaço em disco?

user2068965
fonte
A pergunta no título e no final do corpo da pergunta é bem diferente. Algumas respostas estão relacionadas a uma pergunta, outras à outra. Você deve esclarecer suas necessidades reais e, possivelmente, aceitar uma resposta também.
Melebius 18/04

Respostas:

50

Você provavelmente sabe que pode remover um arquivo que ainda está em uso por algum aplicativo e, para esse aplicativo, ele permanece disponível. É porque o descritor de arquivo no / proc / filesystem é mantido aberto.

Portanto, se existem descritores abertos para arquivos já removidos, o espaço ocupado por eles é considerado usado por df(e dfé correto), mas eles não podem ser levados em consideração duporque não há mais nomes de arquivos associados a eles.

Você pode encontrar todos os arquivos abertos, sem vínculo, mas mantidos, com:

# lsof | grep '(deleted)'
Dmitry Alexandrov
fonte
7
Isso acabou de me salvar. Não fazia ideia do motivo pelo qual meu disco estava cheio, mas du disse que estava vazio. Um identificador de arquivo aberto para um arquivo de 8GB
Cheyne
5
Como posso excluir os links?
Vikas Hardia
1
Às vezes, você precisa executar isso como root para ver os arquivos excluídos mantidos abertos por processos de outros usuários.
Envek
1
A causa raiz disso para mim acabou sendo uma especificação de arquivo de log incorreta em um dos meus /etc/logrotate.darquivos. Faltava uma entrada incorreta na rotina pós-rotação, o que fazia com que o processo daemon não soltasse os arquivos rotacionados / excluídos.
Dale Anderson
como posso remover esses arquivos desvinculados, mas abertos?
Zx1986
14

Como posso excluir os links? - Vikas Hardia Aug 22 '14 às 5:46

Você deve encontrar o processo que contém o identificador de arquivo. Use o comando de Dmitry Alexandrov, lá você vê o processo e o pid. No nosso caso, o arquivo de log de verniz "antigo" foi o que matou o espaço.

# lsof | grep '(deleted)'
[...]
varnishlo 13978       varnishlog    3w      REG              252,1 318448027646    5926973 /var/log/varnish/varnish.log.1 (deleted)
apache2   16801         www-data    2w      REG              252,1        64550   13110120 /var/log/apache2/error.log.1 (deleted)
[...]
# service varnishlog stop
[or if there is no service script]
# kill -11 13978 (the second number of the lsof command is the pid)
[or may be] 
# kill -9 13978

Não se esqueça de iniciar o serviço ou processo novamente, se for um demônio ou algum outro serviço no seu computador. Se puder, basta reiniciar o computador;)

Octeny
fonte
9

Ok, vamos verificar as páginas do manual:

df - relata o uso do espaço em disco do sistema de arquivos

e

du - estimativa o uso do espaço no arquivo

Essas duas ferramentas foram feitas para propostas diferentes. Enquanto dfé mostrar o uso do sistema de arquivos, dué reportar o uso do espaço no arquivo. dutrabalha a partir de arquivos enquanto dftrabalha no nível do sistema de arquivos, relatando o que o kernel diz ter disponível. Continue lendo odu manual.

Resuma o uso do disco de cada ARQUIVO , recursivamente para diretórios.

diz du trabalha com arquivos.

dfexibe a quantidade de espaço em disco disponível no sistema de arquivos contém cada argumento de nome de arquivo. Se nenhum nome de arquivo for fornecido, o espaço disponível em todos os sistemas de arquivos atualmente montados será mostrado.

aqui diz que dfnão se preocupam com os arquivos, mas com o próprio sistema de arquivos.

Braiam
fonte
Esse uso pode ser modificado com o caractere -x, para que ele conte apenas arquivos no sistema de arquivos especificado.
macetw 10/06
1

Simplesmente disse:

Você executou dusem permissões de root. Portanto, não é possível verificar o espaço disponível /proc,/mnt , etc, pastas.

df mostrou o total usado e espaço livre, respectivamente.

Portanto, ao verificar o sistema de arquivos raiz do Linux, tome o durelatório como final.

Sekra Invos
fonte
0
df

Resuma o espaço livre em disco

Ele exibe a quantidade de espaço em disco disponível.

du

Resuma o uso do disco.

Ele exibe a quantidade de espaço em disco usado.

Mitch
fonte
sim, mas no resultado de "df -Th", mostrou 68G usado. hoje de manhã, quando tento acessar o sistema ubuntu, ele ainda exibe a mensagem "o sistema está executando no modo de gráficos baixos", mas quando eu checo o uso da memória, os comandos "df" e "du" mostram um resultado razoável. Mas qual é o problema com o "modo de gráficos baixos"?
usar o seguinte comando
Dê uma olhada nisso .
Mitch
0

nada muito confuso: Aqui está o look: =

1) du == Uso do disco
Quanto espaço em disco está sendo usado por esses arquivos?

2) df == Sem disco
Quanto espaço livre em disco temos?

Também para o sistema está executando no modo de gráficos baixos ' aqui '

Avani badheka
fonte
0

eu fiz
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

Explicou exatamente a grande discrepância de 21 GB que eu estava vendo!
O arquivo em questão era / swap file se 21GB !!

user727981
fonte