É importante saber que existem dois tipos de limites:
- Um limite fixo é configurável apenas pela raiz. Este é o valor mais alto possível (limite) para o limite flexível.
- Um limite flexível 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 será bem-sucedido apenas se o limite máximo (verificação ulimit -Hn
:) for igual ou superior. Se você precisar de valores mais altos, aumente o limite rígido usando um dos métodos abaixo. Os limites são definidos por processo e são herdados por processos gerados recentemente; portanto, qualquer coisa que você execute após esse comando no mesmo shell terá os novos limites.
Alterando o limite rígido em uma única sessão
Isso não é fácil porque apenas 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 pam_limits
você usa, você pode definir os limites de todo o sistema /etc/security/limits.conf
nos arquivos /etc/security/limits.d
. O arquivo conf contém uma descrição. Linhas de exemplo:
@webadmins hard nofile 16384
@webadmins soft nofile 8192
Isso definirá o limite máximo e o limite flexível padrão para usuários do grupo webadmins
após o login.
Outros limites
O valor do limite rígido é limitado pelo limite global do valor dos descritores de arquivo aberto, no /proc/sys/fs/file-max
qual é bastante alto por padrão nas distribuições modernas do Linux. Este valor é limitado pelo NR_OPEN
valor usado durante a compilação do kernel.
Não existe uma solução melhor?
Talvez você possa verificar se todos os *log
arquivos que você alimenta tail -f
são realmente arquivos ativos que precisam ser monitorados. É possível que alguns deles já estejam fechados para registro e você pode simplesmente abrir um número menor de arquivos.