Alguma maneira de descobrir o que está preenchendo meu disco? [duplicado]

1

Esta manhã fui recebido com um aviso de disco baixo na minha partição raiz. Então eu comecei com o caminho de investigação usual e, obviamente, o resultado do meu primeiro comando tornou-se o mostrado abaixo.

[root@my-server /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              97G   86G  6.0G  94% /
tmpfs                  12G  5.7G  6.1G  48% /dev/shm
/dev/sda2             360G   16G  326G   5% /www
/dev/sdb1             458G   38G  397G   9% /web
/dev/sdc1             458G   42G  393G  10% /server
/dev/sdd1             458G   44G  392G  10% /mysql
[root@my-server /]# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda3            6406144  264687 6141457    5% /
tmpfs                3070273     175 3070098    1% /dev/shm
/dev/sda2            23928832    1373 23927459    1% /www
/dev/sdb1            30457856   52061 30405795    1% /web
/dev/sdc1            30457856    1995 30455861    1% /server
/dev/sdd1            30457856     793 30457063    1% /MySQL

Mas eu queria saber quem está ocupando tanto espaço e ativou o uso do disco e encontrou

[root@my-server /]# du -shx /
24G /
[root@my-server /]# du -h --max-depth=1 /
1.6G /root
4.0G /home
14M /sbin
6.5G /var
0 /misc
12K /.dbus
4.0K /mnt
4.0K /media
5.7G /dev
4.8G /opt
0 /sys
52M /user
35M /etc
0 /net
4.0K /bak
43G /mysql
6.5G /usr
du: cannot access '/proc/3633/task/25117/fd/78': No such file or directory
du: cannot access '/proc/3633/task/7047/fd/70': No such file or directory
du: cannot access '/proc/24882/task/24882/fd/4': No such file or directory
du: cannot access '/proc/24882/task/24882/fdinfo/4': No such file or directory
du: cannot access '/proc/24882/fd/4': No such file or directory
du: cannot access '/proc/24882/fdinfo/4': No such file or directory
du: cannot access '/proc/24883': No such file or directory
0 /proc
244M /lib
4.0K /nas
4.0K /selinux
4.0K /srv
27M /lib64
42G /server
49M /boot
16G /www
16K /lost+found
38G /web
100M /tmp
8.9M /bin
168G /

whoops, o uso real é em torno de 30GB, como faço para encontrar quais arquivos estão comendo meu disco?

Confirmando a suspeita de que o culpado era um arquivo excluído, nada como find ou du poderia resolver o arquivo ofensivo se o arquivo não existe! bem, a sequência real de ações para encontrá-lo foi

[root@my-server ~]# lsof / | grep deleted
...
java  3633  wwwuser  1w  REG  8,3  66975347588  396715  /home/wwwuser/apache-tomcat-7.0.29/logs/catalina.out (deleted)
...

whoops, um arquivo de 62GB, agora,

[root@my-server ~]# cd /proc/3633/fd/
[root@my-server fd]# ll | grep deleted
[root@my-server fd]# > 1

Bem, os comandos acima eu descobri de outra resposta SO em link , mas eu queria saber wat foi esse último comando? Como recuperou o espaço em disco órfão?

    
por Jimson Kannanthara James 07.10.2013 / 19:31

3 respostas

3

Meu comando favorito para localizar o que está ocupando espaço é este:

$ du -sh ./*

Quando você executa o comando disco usado com essas opções, ele exibe os tamanhos dos arquivos e pastas nessa pasta. para pastas, o tamanho inclui o tamanho de todo o conteúdo também. Isso torna super fácil ver rapidamente onde seu espaço está se esgotando.

Protip: Se este for um comando que você deseja executar com frequência, você pode criar um alias para ele no arquivo ~/.bashrc desta forma:

alias showdisk='du -sh ./*'

Agora, na próxima vez que você carregar seu terminal, você será do tipo $ showdisk e exibirá os tamanhos dos arquivos e pastas na pasta em que você está na linha de comando. Espero que isso ajude a acelerar as coisas para você: D

    
por 07.10.2013 / 19:52
2

Eu gosto dessa ferramenta:

link

É basicamente um wrapper ncurses gui para du. Acho que é um pouco mais útil do que um simples, já que realiza todo o trabalho ao mesmo tempo, em vez de cada vez que você entra no diretório com a maior utilização. Pode ser especialmente útil em árvores de disco com muitos dados nelas.

    
por 07.10.2013 / 20:26
0

Eu sempre uso este script simples que irá imprimir os arquivos que são grandes

find /var/log -type f -size +3G -exec ls -lh {} \; | awk '{ print $5 ": " $9 }' | sort -rh

mas no caso de haver pastas que contenham muitos arquivos pequenos eu sempre uso

du -sh folder

ou

du -hsx /* | sort -rh | head -10

para encontrar arquivos duplicados, primeiro por tamanho, em seguida, md5sume

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate
    
por 08.10.2013 / 01:36

Tags