É importante saber que existem dois tipos de limites:
- Um limite de segurança é configurável apenas pela raiz. Este é o maior valor possível (limite) para o limite flexível.
- Um
limite suave pode ser definido por um usuário comum. Este é o limite real em vigor.
Solução para uma única sessão
No shell, defina o limite flexível:
ulimit -Sn 2048
Este exemplo aumentará o limite real para 2048, mas o comando só será bem-sucedido se o limite rígido (verificar: ulimit -Hn
) for igual ou maior. Se você precisar de valores mais altos, aumente o limite máximo usando um dos métodos abaixo. Os limites são definidos por processo e são herdados por processos recém-gerados, portanto, qualquer coisa executada após esse comando no mesmo shell terá os novos limites.
Alterar limite máximo em uma única sessão
Isso não é fácil, porque somente o root pode alterar um limite rígido e depois de mudar para o root, você precisa voltar ao usuário original. Aqui está a solução com sudo
:
sudo sh -c "ulimit -Hn 9000 ; exec su \"$USER\""
Solução para todo o sistema
No Debian e em muitos outros sistemas que usam pam_limits
, você pode definir os limites para todo o sistema em /etc/security/limits.conf
e em arquivos em /etc/security/limits.d
. O arquivo conf contém descrição. Linhas de exemplo:
@webadmins hard nofile 16384
@webadmins soft nofile 8192
Isso definirá o limite rígido e o limite padrão para usuários no grupo webadmins
após o login.
Outros limites
O valor do limite rígido é limitado pelo limite global do valor dos descritores de arquivos abertos em /proc/sys/fs/file-max
, que é bastante alto por padrão nas distribuições modernas do Linux. Este valor é limitado pelo valor NR_OPEN
usado durante a compilação do kernel.
Não há uma solução melhor?
Talvez você possa verificar se todos os arquivos *log
enviados para tail -f
são arquivos realmente ativos que precisam ser monitorados. É possível que alguns deles já estejam fechados para o registro e você possa simplesmente abrir um número menor de arquivos.