Isso está acontecendo no Ubuntu Release 12.04 (preciso) Kernel Linux de 64 bits 3.2.0-25-virtual
Estou tentando aumentar o número de arquivos abertos permitidos para um usuário. Isso é para o meu aplicativo java do eclipse, onde o limite atual de 1024 não é suficiente.
De acordo com os posts que eu encontrei até agora, eu deveria poder colocar linhas em
/etc/security/limits.conf assim:
soft nofile 4096
hard nofile 4096
para aumentar o número de arquivos abertos permitidos para todos os usuários.
Mas isso não está funcionando para mim e acho que o problema não está relacionado a esse arquivo.
Para todos os usuários, o limite padrão é 1024, independentemente do que estiver em /etc/security/limits.conf (reinicializei após alterar esse arquivo)
$ ulimit -n
1024
Agora, apesar das entradas em /etc/security/limits.conf, não posso aumentar isso:
$ ulimit -n 2048
-bash: ulimit: arquivos abertos: não é possível modificar o limite: Operação não permitida A parte estranha é que eu posso alterar o limite para baixo , mas não para cima - mesmo para voltar para um número abaixo do limite original:
$ ulimit -n 800
$ ulimit -n
800
$ ulimit -n 900
-bash: ulimit: open files: cannot modify limit: Operation not permitted
Como root, posso alterar esse limite para o que eu quiser, para cima ou para baixo. Nem parece se importar com o supostamente limite de todo o sistema em / proc / sys / fs / file-max
# cat /proc/sys/fs/file-max
188897
# ulimit -n 188898
# ulimit -n
188898
Mas, mesmo que o eclipse seja executado como root, meu aplicativo ainda trava por causa da exceção "Muitos arquivos abertos"!
Até agora, não encontrei nenhuma maneira de aumentar o limite de arquivos abertos para um usuário não root.
Como devo fazer isso corretamente? Eu olhei para vários outros posts, mas sem sorte!
/etc/security/limits.conf
, talvez seja necessário sair e fazer login novamente antes de poder usar o novo limite máximo. Fiz isso e fiquei perplexo aoulimit -Hs
mostrar 1000 quando acabei de aumentá-lo para 1000000! Então eu saí e voltei, e o ulimit mostrou a nova quantia.Respostas:
Por
ulimit
padrão, o comando altera os limites HARD, que você (um usuário) pode diminuir, mas não pode aumentar.Use a opção -S para alterar o limite de SOFT , que pode variar de 0 a { HARD }.
Eu, na verdade alias
ulimit
paraulimit -S
, de modo que os padrões para os limites suaves o tempo todo.Quanto ao seu problema, está faltando uma coluna nas entradas
/etc/security/limits.conf
.Deve haver QUATRO colunas, mas a primeira está faltando no seu exemplo.
A primeira coluna descreve a OMS que o limite deve ser solicitado. '*' é um curinga, significando todos os usuários. Para aumentar os limites da raiz , você deve digitar explicitamente 'raiz' em vez de '*'.
Você também precisa editar
/etc/pam.d/common-session*
e adicionar a seguinte linha ao final:fonte
/etc/pam.d/common-session*
e acabei de editarcommon-session
, e mesmo depois de uma reinicialização, não funcionou. Porém, após adicionar a mesma linha (parapam_limits.so
) acommon-session-noninteractive
,ulimit -n
o novo valor foi exibido após um novo login (não é necessário reiniciar). FWIW Eu estava tentando alterar o limite para raiz (apenas).Se você usar limites flexíveis e rígidos por usuário, poderá usar algo como:
para verificar se suas configurações estão funcionando para esse usuário específico ou não.
fonte
Tenho muitos problemas para fazer isso funcionar.
Usar o seguinte permite atualizá-lo independentemente da sua permissão do usuário.
fonte
$ sudo sysctl -w fs.inotify.max_user_watches=100000 fs.inotify.max_user_watches = 100000 $ ulimit -n 1024