http://www.zago.eti.br/du.txt FAQ - copia de respostas esclarecedoras na lista Linux-br. Dicas, exemplos de linha de comando e indicações sobre uso do du Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. ******************************************************** Página principal http://www.zago.eti.br/menu.html Página do man em português http://200.204.198.164/zago/pt_BR/man1/du.html http://200.204.198.164/zago/pt_BR/man1/df.html **************************************************** Ambiente gráfico. No CL10 tem o fsview plugin para konqueror, precisa instalar o pacote konqueror-addons: apt-get install konqueror-addons No konsole execute: fsview este comando abre uma janela no KDE com informação do diretório de onde executou o comando. xdu = xdiskusage Procure também pelo pacote xdu, veja em: http://xdiskusage.sourceforge.net/ KDE, procure por "Free Disk Space Applet" na sua distro ou em: http://www.kde-apps.org/ filelight - resultado em graficos... http://www.kde-apps.org/content/show.php?content=9887 **************************************************** Ambiente texto, console, shell, konsole, terminal .... du = directory usage du - estima o espaço utilizado em disco, diretorios .... df df - relata o espaço de disco usado pelo sistema de arquivo Consulte o manual: man du man df Pra localizar arquivos por tamanho, definir tamanho minimo pra listar os arquivos, use find -size, veja exemplos no FAQ:. http://www.zago.eti.br/find.txt Veja também mount: http://www.zago.eti.br/mount.txt vizualizar as partições. more /proc/partitions veja também: fdisk -l **************************************************** O Comando du procura do diretorio local pra baixo, pra pegar todo o HD aplique o comando no raiz (/), como root, ou informe o caminho, por exemplo: cd / du Ou indique o caminho do diretório principal, pra todo HD indique "/": du / du /home/zago Diretório corrente, por default, quando omitido o destino, exibe o resultado do diretório local, para forçar use um ponto no final, navegue até o diretório desejado e após o comando acrescente um ponto, exemplos; du -h . du -sm . Exibir mensagem após o resultado, exemplo para escrever total no resultado, acrescente --total [zago@faqcl10 zago]$ du -s . --total 2156448 . 2156448 total Ou com --si, trabalha com potência de 1000 em lugar de 1024, com --si M representa 1000000 e não 1048576 Compare o resutado, acima com -s = 2156448 e com --si abaixo = 2,3G [zago@faqcl10 zago]$ du --total --si 2,3G total TOTAL DE BYTE USADOS POR DIRETORIO $ du -h | sort -nr | head -5 # du nome_do_diretorio ou caminho ex: du /home/zago Para descobrir quais os maiores diretórios do seu sistema, digite: du -S | sort -n espaço em MB # du -sm Pra saber o total utilizado de um diretório, por exemplo o de um usuário, eu utilizo assim: [zago@mail zago]$ du -chs /home/zago 2.8G /home/zago 2.8G total Demora um pouco, vai ler todos os diretórios indicados pra exibir somente o resultado. Executar este comando como user comum não vai pegar os dados de diretório que não possa ler, exemplo: [zago@mail zago]$ du -chs /home du: não foi possível mudar para o diretório `/home/carol': Permissão negada 24G /home 24G total Espaço ocupado pelo diretório, indique o caminho e nome do diretório exemplo pra /home/zago/figuras du -sh /home/zago/figuras Espaço ocupado pelo arquivo, indique o caminho e nome do arquivo: du -sh ftpenvia 4.0k ftpenvia du -h /home/zago/figuras em ordem decrescente (do maior para o menor), more provoca pausa em cada página. du -S | sort -nr | more du -h --max-depth=1|more Exemplos: du -hc /home/zago/guiaz ---cortei algumas linhas para encurtar o exemplo--- 508k /home/zago/guiaz/modem 2.8M /home/zago/guiaz/drivers 56M /home/zago/guiaz 56M total Pra descer somente um diretório, use a diretiva --max-depth=1: du -hc /home/zago/guiaz --max-depth=1 du -k --max-depth=1 /home/zago/guiaz/ du -k --max-depth=1 /home/zago/guiaz/ | sort -n Resultado: [root@faqcl10 zago]# du -hc /home/zago --max-depth=1 73M /home/zago/guiaz Pra descer até o segundo sub-diretório, use --max-depth=2: du -hc /home/zago --max-depth=2 Resultado: [root@faqcl10 zago]# du -hc /home/zago --max-depth=2 312K /home/zago/guiaz/linguag 1,6M /home/zago/guiaz/samba 736K /home/zago/guiaz/squid du -abS --max-depth=1 du -sh /home/zago/guiaz 56M /home/zago/guiaz # Mostra os 20 usuários que mais ocupam espaço em disco du -sk * | sort -nr | head -n 20 Lista os 20 maiores sub-diretorios abaixo do diretório selecionado du -hc /home/zago | sort -nr | head -n 20 Exemplo: [zago@mail zago]$ du -hc /home/zago | sort -nr | head -n 20 1016k /home/zago/.galeon/favicons 992k /home/zago/alexinv 992k /home/zago/.galeon/mozilla 988k /home/zago/.galeon/mozilla/galeon 852k /home/zago/OpenOffice.org1.0.3/user ---corta--- Listar somente o maior diretório ou arquivo, alguns exemplos: [zago@faqcl10 guiaz]$ du -hc /home/zago | sort -nr | head -n 1 1020K /home/zago/.kde [zago@faqcl10 guiaz]$ du -sh /home/zago/guiaz/* | sort -n | tail --lines=1 924K /home/zago/guiaz/modem [zago@faqcl10 guiaz]$ du -sh /home/zago/guiaz/modem/* | sort -n | tail --lines=1 84K /home/zago/guiaz/modem/modem.txt somente o tamanho de arquivo especifico, precisa nome, também o caminho quando em outro dirtório. du -sh /home/zago/guiaz/du.txt 24K /home/zago/guiaz/du.txt Exemplos com uso do df: df -k Sist. Arq. 1K-blocos Usad Dispon. Uso% Montado em /dev/hda2 38337904 5058388 31332040 14% / df -m Sist. Arq. 1M-blocos Usad Dispon. Uso% Montado em /dev/hda2 37440 4940 30598 14% / df -h Sist. Arq. Tam Usad Disp Uso% Montado em /dev/hda2 37G 4,9G 30G 14% / Pegar o percentual de utilização, alguns exemplos. df | grep sda2 | awk '{print $5}' | sed 's/\%//' df /dev/sda2 | tail -1 | awk '{print $5}' altere sda2 ou /dev/sda2 pela partição desejada. du -sc /home/zago/* | sort -n du -sk /home/zago/* | sort -n Esta linha de comando acima não inclui diretórios ocultos, aqueles que iniciam com ponto, a solução abaixo lista também os sub-diretórios que iniciam com um ponto, oculto. du -k --max-depth=1 /home/zago/ | sort -n Partições montadas e espaços, df -H [zago@faqcl10 zago]$ df -H Sist. Arq. Tam Usado Disp Uso% Montado em /dev/hda2 26G 14G 12G 54% / /dev/hda3 47G 5,6G 39G 13% /mnt/ori Tirado do man do df: man df df relata o espaço usado e disponível em todos sistemas de arquivos atualmente montados (de todos os tipos). Portanto partições não montadas não não aparece nos resultados do df, pra listar todas as partições existentes em todas as HD da maquina, independente do sistema de arquivos ou de estarem montadas ou não, use: fdisk -l Sistema de arquivos, (df -T) - exibe também o sistema de arquivos, mas somente dos discos montados, ex.: df -T [zago@faqcl10 t2t]$ df -T Sist. Arq. Tipo 1K-blocos Usad Dispon. Uso% Montado em /dev/hda2 ext3 25197252 4793300 19123976 21% / /dev/hda3 ext3 45358532 5392084 37662328 13% /mnt/ori /dev/hdc1 ext3 38298572 31042444 5310660 86% /mnt/hd Salvar o resultado do comando em arquivo, quando a lista de diretórios é muito grande fica dificil analizar na tela, utilize fltros como grep ou salve em arquivo que fica mais fácil refinar a pesquisa, basta acrescentar no final da linha > resultado.txt, por exemplo: du > resultadodu.txt du | sort -g > resultadosort.txt No final da linha de comando acrescente o sinal de maior ">" e depois o nome do arquivo, depois edite o arquivo pra analizar ou manipule com scripts pra continuar refinando a pesquisa. O ponto pesquisa do diretório atual para baixo. du -k . |sort -n redirecionadores salva o resultado em arquivo (>) cria novo arquivo, (>>) acrescenta no final de arquivo. du -k . |sort -n >>duarquivo.txt *********************************************** Script pra enviar e-mail informando espaço em disco [root@faqcl10 root]# cat discocheio #!/bin/sh usando=`df -k / | tail -1 | awk '{print $3}'` disponivel=`df -k / | tail -1 | awk '{print $4}'` critico="1000000" if [ $critico -ge $disponivel ]; then echo "Espaço em disco no servidor está crítico" > mail.txt echo "Espaço disponível $disponivel em uso $usando" >> mail.txt mail -s "Servidor com espaço critico - livre somente $disponivel" andersonmsp@yahoo.com.br < mail.txt else echo "Espaço em disco no servidor OK" > mail.txt echo "Espaço disponível $disponivel em uso $usando" >> mail.txt mail -s "Espaço no servidor do zago - disponível $disponivel em uso $usando" andersonmsp@yahoo.com.br < mail.txt fi Neste exemplo o resultado está em KB, pra obter resultados em MB ou GB, faça as alterações no script acima, veja nos exemplos de uso do df e man df. *********************************************** Alguns exemplos de comandos e seus resultados: [zago@faqcl10 zago]$ du -sh * | cut -f1 36K 64K 661M [zago@faqcl10 zago]$ ls -lh | awk '{print $5}' 4,0K 12K 17K 7,0K [zago@faqcl10 zago]$ du -sh | awk '{print $1}' 3,4G Pegar somente o tamanho do arquivo du cl10_cd1.iso | awk '{print $1}' 660204 Script pra gravar CD e testar tamanho da ISO. #!/bin/bash # pegar tamanho do arquivo arqtam=$(du cl10_cd1.iso | awk '{print $1}') # comparar se maior que 600000 if [ $arqtam -gt 600000 ]; then echo " arquivo maior que o limite do CD" exit 1 else echo " tamanho OK, gravando CD" # comandos para gravar CD. fi Compara com 4000000, gravar em DVD, altere o Valor para 4000000, modificado para DVD: #!/bin/bash # pegar tamanho do arquivo arqtam=$(du cl10_cd1.iso | awk '{print $1}') # comparar se maior que 4000000 if [ $arqtam -gt 4000000 ]; then echo " arquivo maior que o limite do CD" exit 1 else echo " tamanho OK, gravando DVD" # comandos para gravar DVD. fi *********************************************** leandro escreveu: Para saber de forma rápida e fácil quanto ocupa de espaço cada pasta de uma árvore use o comando: du -chs * Exemplo de resultado: [root@rede /]# du -chs * 4.8M bin 2.5M boot 264k dev 8.2M etc 232M home 8.0k include 25M lib Visualizando o espaço ocupado e o espaço livre no disco: O comando du mostra quantos blocos de disco estão ocupados por arquivos ou diretórios. Ou seja, ele mostra a soma do tamanho de todos os arquivos especificados ou dos arquivos de um determinado diretório e seus sub-diretórios. A saída pode ser em blocos ou em bytes. Sua sintaxe é: du [-abchkmsS] [arquivo|diretório] -a -> mostra também todos os arquivos e não somente diretórios. -b -> mostra o tamanho dos arquivos em bytes. -c -> mostra também o total geral do tamanho de todos os arquivos. -h -> mostra o tamanho abreviado para a grandeza mais próxima: kilo, mega, giga. -k -> mostra o tamanho dos arquivos em kilobytes. -m -> mostra o tamanho dos arquivos em megabytes. -s -> mostra apenas o total de ocupação de cada diretório especificado. -S -> não inclui no espaço ocupado do diretório o tamanho dos sub-diretórios. Existem outros parâmetros que não foram mostrados aqui, consulte a página manual para conhecê-los. Veja alguns exemplos: # du -bcS -> lista, em bytes, somente o diretório atual e os sub-diretórios, sem incluir o tamanho dos sub-diretórios no valor do diretório, e o total geral de todos os diretórios. # du -abc /dir1 -> lista, em bytes, os arquivos e sub-diretórios do diretório especificado, incluindo no tamanho dos diretórios os tamanhos de seus sub-diretórios, e o total geral de todos os diretórios. # du -bsS -> mostra, em bytes, somente o espaço ocupado pelos arquivos do diretório atual. # du -bs -> mostra, em bytes, somente o espaço ocupado por todos os arquivos do diretório atual e de seus sub-diretórios. # du -bcsS -> mostra, em bytes, o espaço ocupado pelos arquivos do diretório atual e o espaço ocupado por todos os arquivos do diretório atual e de seus sub-diretórios. # du -chsS -> mostra, de forma abreviada, o espaço ocupado pelos arquivos do diretório atual e o espaço ocupado por todos os arquivos do diretório atual e de seus sub-diretórios. Veja também alguns exemplos em que foi combinado o comando du com outros comandos: # du -abc | sort -n | more # du -abc | sort -rn > arq.txt Para visualizar o espaço livre em seu disco, usa-se o comando df. Ele mostra o espaço livre em todos os sistemas montados. O comando df mostra também o tamanho das partições montadas e o espaço ocupado em cada uma delas. Veja alguns exemplos: # df -> mostra o espaço livre em blocos. # df -m -> mostra o espaço livre em megabytes. # df -h -> mostra o espaço livre de forma abreviada para a grandeza mais próxima: kilo, mega, giga. du -c -H mostra o tamanho do diretorio no caminho especificado Consulte a página manual do df para conhecer outros parâmetros. *********************************************** > Tenho um linux (versao conectiva 4.0) onde utilizo o samba para > compartilhar arquivos e impressora entre estações windows 98. > > A divisão do HD é a seguinte: > > Filesystem Size Used Avail Use% Mounted on > /dev/hda1 243M 241M 0 100% / > /dev/hda5 10G 3.7G 6.1G 38% /home > /dev/hda7 152M 8.0k 144M 0% /tmp > /dev/hda6 774M 260M 474M 35% /usr > > Como vocês podem ver o /dev/hda1 montado no / está com 100% do seu espaço > ocupado. Já entrei no linux como monousuário e desmontei o /home, /tmp e > /usr para ver em qual diretório está concentrado os 241 Mb e só encontrei > 150Kb no diretório /root. > > Neste instante não consigo mais imprimir e nem iniciar o serviço samba. > > Alguém pode me ajudar, a situação é crítica. Vá para single user (shutdown now). Você não vai poder desmontar o /usr pois o comando du está dentro dele. Desmonte o /tmp e o /home. Vá para / e dê du -sk [a-t,v-z]* para descobrir o diretório culpado. Vá para dentro dele e dê du -sk *. Repita até encontrar o danado... du -sk * | sort -n ********************************************** De: Hadad Responder-a: Hadad Para: Carlos Roberto Schimidt Cc: linux-br@bazar.conectiva.com.br Assunto: (linux-br) Re: RES: (linux-br) Porque o DU é tao instavel ? Data: 18 Dec 2002 17:15:30 -0300 Wednesday, December 18, 2002, 3:54:20 PM, you wrote: CRS> Será que o du é instável ou o usuário está rodando algum processo que cria CRS> arquivo temporário nesse diretório, e quando o processo termina libera CRS> espaço? Oi! Olha eu tambem pensei nessa possibilidade, mas logo a descartei pq dando esse comando na raiz do servidor onde existem diretorios de arquivos temporarios e coisas do genero (tmp, proc, dev...) o resultado é sempre assim instavel. E tem um detalhe estranho tambem que eu esqueci de mencionar.... O DU sempre me retorna 2 valores diferentes, conforme eu disse. So que esses valores sao sempre os mesmos. Assim: vamos supor que eu rode a primeira vez e ele retorna 455, a segunda vez tambem, a terceira, quarta e quinta tambem. Mas na sexta (ou na setima ou oitava nao importa) ele retorna 228. Ai na setima ele retorna 228, na oitava ele retorna de novo 455.... Ou seja, as variacoes sao sempre entre 2 valores "fixos" toda vez que se roda o raio do comando..... ou seja, nunca da varios valores diferentes, sempre 2 valores diferentes porem fixos. Se fossem arquivos temporarios (ou acoes no disco) seria impossivel que os valores fossem sempre os mesmos.... eles seriam aleatorios, mas nem com toda a coincidencia do mundo seriam sempre 2 valores fixos. eu nem sei mais o que faco, isso ta me deixando maluco e nao confio mais no resultado que ele retorna. o que sera que pode ser hem? acho que nem o padre quevedo explica essa. hehehe Hadad CRS> -----Mensagem original----- CRS> Enviada em: terça-feira, 17 de dezembro de 2002 20:43 CRS> pessoal, sempre que rodo o comando: CRS> du -h -s /home/cliente CRS> Ele me dá resultados diferentes... CRS> Por exemplo, ha pouco eu rodei ele para um cliente, e o primeiro CRS> resultado me deu 1.2GB, a segunda, a terceira e a quarta vez seguida CRS> em que rodei o comando, tambem deu 1.2GB CRS> mas na quinta vez seguida, deu 632 MB ! CRS> Isso sempre acontece comigo quando uso o comando DU. CRS> O resultado sempre oscila entre 2 valores diferentes. CRS> pq que isso acontece? CRS> existe outro comando mais confiavel para se ver o tamanho de um CRS> diretorio recursivamente? CRS> -- CRS> Hadad mailto:hadad@brturbo.com ********************************************** De: Anderson Lizardo Para: Hadad Cc: linux-br@bazar.conectiva.com.br Assunto: Re: (linux-br) Re: RES: (linux-br) Porque o DU é tao instavel ? Data: 18 Dec 2002 20:50:11 -0400 Em Qua, 18 Dez 2002 17:15:30 -0300, Hadad escreveu: > O DU sempre me retorna 2 valores diferentes, conforme eu disse. Pude notar, pelos exemplos que você forneceu, que os valores parecem ser aproximadamente um a metade de outro (aproximadamente, pois você utilizou a opção "-s" que arredonda os valores). Lendo o "info du", encontrei o seguinte: On BSD systems, `du' reports sizes that are half the correct values for files that are NFS-mounted from HP-UX systems. On HP-UX systems, it reports sizes that are twice the correct values for files that are NFS-mounted from BSD systems. This is due to a flaw in HP-UX; it also affects the HP-UX `du' program. Por acaso os diretórios que você está utilizando no "du" são montados remotamente? Talvez possa ser este o motivo. -- Anderson Lizardo *lizardo.sytes.net* ********************************************** De: Rodrigo Messias Barros Para: krlinhos@hotmail.com Cc: linux-br@bazar.conectiva.com.br Assunto: Re:(linux-br) Comando ls para ver total de arquivos Data: 20 Dec 2002 18:39:58 -0200 Carlos, boa tarde! O comando que informa o USO EM DISCO é: du Você pode usá-lo com algumas variantes para melhor compreensão de quais arquivos usão mais o disco, por exemplo: # du | sort -n Este comando irá listar os arquivos por ordem númerica e apresentará o espaço em disco. # du | sort -rn Este comando irá listar em ordem DECRESCENTE (do maior para o menor) os arquivos e o espaço em disco utilizado por eles. É interessante pois você fica sabendo quais arquivos estão ocupando mais o espaço disponível. ********************************************** De:  Syndson Silva Responder-a:  syndson@bonnag.com Para:  Anderson Escerda Pereira Cc:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br) Espaço usado por um diretório Data:  Fri, 6 Feb 2004 02:53:56 +0000 > >Como saber quanto espaço está ocupando um determinado diretório?   > Com o comando ls -h vc consegue ver o tamanho de diretórios e arquivos > em MBytes ou GBytes.         Olá!         Ainda tem o comando "du"  (directory usage), que acho que é o que você quer.         Fazendo:    du  /  -h  --max-depth=1         Você tem o total em MB  ou GB(ytes), de todas as pastas debaixo da pasta raiz (/).         Se quiser ver outra pasta, basta mudar o "/"  (ex.:   du  /home -h --max-depth=1  para ver o que há no seu diretório /home).         Um abraço,         Syndson. ********************************************** De:  Thiago Macieira Para:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br) Espaço em disco Data:  Tue, 21 Dec 2004 02:25:08 -0200 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Andrea Fabrete wrote: >Tenho um mandrake 9.0 com LVM habilitada, porém quando apago alguns > arquivos de log para limpar espaço em disco e dou o comando df -h, é > como se não tivesse apagado nada, mas se dou um boot no servidor e dou > o df -h, ai sim ele mostra o espaço que foi limpo. Existe algum comando > que eu possa executar para ele mostrar o espaço limpo, sem ter que dar > boot no servidor ? Desde já agradeço, Depois de apagar os arquivos, certifique-se que nenhum programa rodando ainda os tem abertos. O arquivo só é realmente apagado depois que todas as referências a ele forem fechadas. - --   Thiago Macieira  -  thiago (AT) macieira (DOT) info ********************************************** De: Thiago Macieira Para: linux-br@bazar2.conectiva.com.br, Reinaldo Almeida Bonilho Assunto: Re: (linux-br) Problemas com espaço em disco Data: Tue, 12 Apr 2005 18:50:07 -0300 Reinaldo Almeida Bonilho wrote: >Deu 100% no /var após excluir alguns arquivos não liberou espaço, >somente liberou quando desliguei e liguei a máquina. Existe algum >comando para liberar espaço quando acontece isso ? Apague os arquivos *E* feche os programas que mantêm os arquivos abertos. Se os arquivos que foram apagados estiverem abertos, o espaço só é liberado quando os arquivos forem fechados. -- Thiago Macieira - thiago (AT) macieira (DOT) info ********************************************** ********************************************** De: Jeffy and1 Responder A: Jeffy and1 Para: Daniel Loiola de Araujo Cc: linux-br@bazar2.conectiva.com.br Assunto: Re: (linux-br) RES: Dúvida Script. Data: Fri, 20 May 2005 14:15:20 -0300 On 5/20/05, Daniel Loiola de Araujo wrote: > Olá pessoal, Colega, em csh vc pode usar o "foreach" exemplo ------------------------------------------ #!/bin/csh foreach user (`cat lista.txt`) du -sh $user end ------------------------------------------ este exemplo entendo q no lista .txt so' existe uma coluna em cada linha com somente o login do usuario ... caso contrario vc pode usar o AWK para separar os campos... foreach user (`cat lista.txt | awk ..... `) abs. jeff > > Estou com uma pequena dúvida, como faço pra que um script leia uma lista > num arquivo > txt por exemplo e execute um mesmo comando para todos, um a um ? Estou > verificando o tamanho > das pastas de perfil dos usuários, só que tenho mais de 150 usuário pra > fazer isso, e acaba > sendo uma tarefa demorada, por isso preciso montar este shell, só não sei > como! Se puderem > me ajudar agradeço. > > EXEMPLO: > > du -sh usuario1 > du -sh usuario2 > > Ats, > DANIEL ********************************************** De: Leandro Mendes Para: Daniel Loiola de Araujo Cc: 'linux-br@bazar2.conectiva.com.br' Assunto: Re: (linux-br) RES: Dúvida Script. Data: Fri, 20 May 2005 14:13:01 -0300 O jeito mais difícil é usar o for..... O mais fácil é: $ cat arquivo |xargs du -sh >du -sh usuario1 >du -sh usuario2 > > > **********************************************