
Preciso me livrar do incômodo limite "Muitos arquivos abertos no sistema" no OS X 10.7.1.
Há algum caminho?
Responder1
De acordo comeste artigo útil(que recomendo ler):
Por padrão, o número máximo de arquivos que o Mac OS X pode abrir é definido como 12.288 e o número máximo de arquivos que um determinado processo pode abrir é 10.240.
Você pode verificar isso com:
sysctl kern.maxfiles
sysctl kern.maxfilesperproc
Você pode aumentar os limites (por sua conta e risco) com:
sysctl -w kern.maxfiles=20480
(ou qualquer número que você escolher)sysctl -w kern.maxfilesperproc=18000
(ou qualquer número que você escolher)
Para tornar a alteração permanente, use sudo
para inserir suas configurações /etc/sysctl.conf
(que você pode ter que criar), assim:
kern.maxfiles=20480
kern.maxfilesperproc=18000
Nota: No OS X 10.10 ou inferior, você pode adicionar configurações /etc/launchd.conf
semelhantes limit maxfiles
e elas substituirão tudo o que você colocar aqui.
Novamente, do artigo:
Depois de fazer isso, o próprio kernel terá um número máximo de arquivos, mas o shell talvez não. E como a maioria dos processos que ocuparão tantos arquivos serão iniciados pelo shell, você vai querer aumentar isso.
O comando para isso é:
ulimit -S -n 2048 # or whatever number you choose
Essa mudança também é temporária; dura apenas a sessão atual do shell. Você pode adicioná-lo ao seu arquivo de configuração do shell ( .bashrc
ou .zshrc
qualquer outro) se quiser que ele seja executado sempre que você abrir um shell.
Responder2
Parece que existe um método totalmente diferente para alterar o limite de arquivos abertos para cada versão do OS X!
Para OS X Serra(10.12.X) você precisa:
1.
Crie um arquivo em /Library/LaunchDaemons/limit.maxfiles.plist
e cole o seguinte (sinta-se à vontade para alterar os dois números (que são os limites flexíveis e rígidos, respectivamente):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>64000</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
2. Altere o proprietário do seu novo arquivo:
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
3. Carregue estas novas configurações:
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
4. Por fim, verifique se os limites estão corretos:
launchctl limit maxfiles
Responder3
Outra opção pode ser encontrar o culpado:
sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail
No último você pode ver quais arquivos estão abertos:
sudo lsof -n | grep socketfil
E mate o processo se desejar
kill $pid
Dos comentários:
Pelo que vale, você também pode obter uma lista dos IDs de processos com os arquivos mais abertos usando
lsof -n +c 0 | sed -E 's/^[^ ]+[ ]+([^ ]+).*$/\1/' | uniq -c | sort | tail
Responder4
Pessoal, no Mavericks 10.9.4
ulimit -n 2048
funciona bem. Pode ser necessário iniciar uma nova sessão de login.