Pular para o conteúdo

Problemas em diretório com milhares de arquivos [Resolvido]

Dica publicada em Linux / Kernel
Fábio Berbert de Paula fabio
Hits: 2.517 Categoria: Linux Subcategoria: Kernel
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Problemas em diretório com milhares de arquivos [Resolvido]

É raro, mas pode acontecer de você possuir um diretório com uma quantidade de arquivos maior que a suportada pelo kernel. A nível de curiosidade, essa quantidade está definida, a partir da raiz do código-fonte do kernel em:

vim include/uapi/linux/limits.h

#define ARG_MAX       131072    /* # bytes of args + environ for exec() */

Você pode recompilá-lo e aumentar essa quantidade a vontade, mas saiba que esse número tem um limite de acordo com sua quantidade de memória RAM.

Uma forma de consultar essa configuração diretamente ao kernel carregado em memória ao invés de abrir o arquivo acima é:

getconf ARG_MAX
2097152

E se tiver curiosidade em consultar as demais configurações do kernel em execução:

getconf -a

Problema

Quando você tem um diretório com uma quantidade de arquivos maior que o ARG_MAX, toda vez que você tentar executar alguma operação nele, como um "ls", "mv" ou "rm", ele irá retornar uma mensagem de erro:

bash: ... : Argument list too long

Solução

Para contornar o problema podemos utilizar o comando find com a operação desejada em seu argumento -exec. Por exemplo, para apagar todos os arquivos do diretório podemos usar o comando abaixo (não, subir um nível acima e executar "rm -Rf diretório" não irá funcionar):

find . -type f -print -exec rm -f {} \;

Até a próxima!

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Como Ler e Gerar QR Code no Linux

Sintaxe alternativa para encontrar arquivos por data com o comando find

MySQL - Como fazer backup de Triggers e Stored Procedures

Falha ao conectar fone bluetooth (headset) no Debian [Resolvido]

Otimizando conexões entre PHP e MySQL

Atualizando o kernel no Ubuntu para o 2.6.30

Como reiniciar um dispositivo USB sem desconectar o cabo

Ubuntu: kernel atualizado com bootsplash

Kernel compilado para o AA1 no UNR

Tunning no boot do seu OpenSuSE Linux

#1 Comentário enviado por maurixnovatrento em 01/06/2020 - 19:26h

eu nem sabia disso. é bom saber caso for necessário.


___________________________________
Conhecimento não se Leva para o Túmulo.

Contribuir com comentário

Entre na sua conta para comentar.