Este tutorial explica como resolver o erro Linux "muitos arquivos abertos".
Depois de ler este artigo, você entenderá a causa do erro que está recebendo e saberá como consertá -lo. Você não apenas aprenderá a corrigir o erro, mas também outros aspectos importantes de seus processos de arquivo Linux OS.
O significado do erro "muitos arquivos abertos"
Quando um usuário executa um processo, o processo associa arquivos contendo informações sobre o uso do arquivo. Por exemplo, os descritores de arquivos podem informar o kernel como acessar um arquivo ou como lidar com isso para outro recurso. Por exemplo, quando usamos um tubo para redirecionar um processo para outro.
Por padrão, todo processo executado do Linux tem pelo menos três arquivos associados chamados Descritores de arquivo: Stdin, stdout e stderr. A função deles é mostrada na tabela abaixo.
Descritor de arquivo | Número | Função |
Stdin | 0 | Refere -se ao método de entrada do teclado |
Stdout | 1 | Imprime ou redireciona a saída, refere -se à tela |
Stderr | 2 | Imprime ou redireciona erros, refere -se à tela |
Há um limite de usuários e processos de descritores de arquivos que podem ser executados simultaneamente. Quando o limite é atingido e o usuário ou processo tenta abrir descritores de arquivos adicionais, obtemos o “Erro de arquivos abertos demais”.
Portanto, a solução para esse erro é aumentar o limite de descritores de arquivo que um usuário ou processo pode abrir.
Corrigindo o Linux "muitos arquivos abertos" erro
Para verificar o limite de arquivos do descritor para a sessão atual, execute o comando mostrado abaixo.
ulimit -n
Como você pode ver acima, o limite é 1024.
Agora, vamos verificar o limite do usuário executando o seguinte comando:
ulimit -u
Para aprender o número de arquivos atuais, você pode usar o comando mostrado na captura de tela abaixo.
LSOF | wc -l
O comando mostrado abaixo pode ser usado para aumentar o limite de arquivos do descritor para resolver este erro. No entanto, isso pode não funcionar se o limite especificado nos arquivos de configuração for alcançado.
Como você pode ver, o sistema não nos permite aumentar o limite. Nesse caso, precisamos editar alguns arquivos.
No primeiro arquivo a editar, você verá dois tipos de limites: limites duros e suaves:
O limite rígido representa o limite máximo permitido para o limite suave. Editar o limite rígido requer privilégios.
Por outro lado, o limite suave é usado pelo sistema para limitar todos os recursos do sistema para executar processos. O limite suave não pode ser maior que o limite rígido.
Você pode aprender limites duros e suaves com os comandos mostrados na captura de tela a seguir, onde ulimit -sn mostra o limite suave e ulimit -hn mostra o limite rígido.
Primeiro, abra o seguinte arquivo com privilégios:
sudo nano/etc/segurança/limites.conf
Edite as linhas mostradas abaixo aumentando o limite. No meu caso, aumentei o limite suave de 1024 para 2048. Aqui, você também pode editar o limite rígido, se necessário.
Em seguida, reinicie o daemon-reexec usando o SystemCTL, como mostrado abaixo.
sudo systemctl daemon-reexec
Abra um novo terminal ou reinicie a sessão para verificar as alterações foram feitas com sucesso e tente alterar o Ulimit novamente executando o seguinte comando e altere o limite para o que você especificou no /etc/segurança/limites.conf arquivo.
ulimit -n 2048
Como você pode ver acima, o limite foi atualizado com sucesso.
Caso não funcione para você, abra o seguinte arquivo com privilégios:
sudo nano/etc/systemd/sistema.conf
Encontre a linha DefaultLimitnofile = e mude o primeiro número diante do cólon, aumentando o limite. No meu caso, aumentei de 1024 para 2048. Em seguida, feche e saia do arquivo salvando as alterações.
Além disso, abra o seguinte arquivo com privilégios:
sudo nano/etc/systemd/usuário.conf
Encontre a mesma linha e edite -a, repetindo as alterações feitas anteriormente.
Reinicie o daemon reexec novamente usando SystemCtl.
sudo systemctl daemon-reexec
Reinicie a sessão e use o seguinte comando, substituindo o 2048 pelo limite que você deseja definir e configurar nos arquivos de configuração:
ulimit -n 2048
O comando a seguir retorna o limite para todo o sistema:
gato/proc/sys/fs/arquivo-max
Você altera o limite do sistema usando o seguinte comando:
sudo sysctl -w fs.arquivo-max =
Para tornar a mudança permanente, edite o seguinte arquivo com privilégios:
sudo nano /etc /sysctl.conf
Adicione a seguinte linha substituindo Com o novo limite que você deseja definir:
fs.arquivo-max =
Reinicie para aplicar novas alterações com o comando abaixo.
sudo sysctl -p
Isso é tudo, depois de aumentar o ulimit, o “Muitos arquivos abertos”O erro deve ser corrigido.
Conclusão
Este erro pode ser facilmente corrigido por qualquer usuário do Linux. Linux oferece maneiras diferentes de abordar esse problema, fique à vontade para tentar todos eles para se livrar desse erro. As etapas descritas acima são válidas para muitas distribuições Linux, mas feitas em distos baseados em Debian. Se você estiver interessado em aprender sobre os descritores de arquivos, publicamos conteúdo específico sobre esse assunto que você pode ler neste site. Os descritores de arquivos são um componente básico de todos os sistemas operacionais.
Obrigado por ler este tutorial explicando como resolver o erro "muitos arquivos abertos" no Linux. Continue nos seguindo para mais artigos de Linux profissionais.