`ulimit -n` para não-raiz


3

Estou executando o El Capitan / Mac OSX 10.11.6 (15G1108) e quero aumentar o "Max Open files" para algumas das minhas sessões de terminais / bash. Estou logado com meus usuários normais. Eu li todos os guias que consegui encontrar e consegui aumentar alguns limites:

Como meu usuário:

$ launchctl limit maxfiles
    maxfiles    200000         200000        

Mas, quando tento definir o limite, falho:

$ ulimit -n 8096
-bash: ulimit: open files: cannot modify limit: Operation not permitted

O estranho é que eu posso definir o ulimit se eu mudar para root:

$ sudo bash
$ ulimit -n 9086

Agora, é claro, executar tudo como root é estúpido, então estou procurando uma solução melhor. Como posso permitir que meu usuário também aumente seu "Limite máximo de arquivos"?

O que eu já fiz:

$ cat /etc/sysctl.conf
kern.maxfiles=65536
kern.maxfilesperproc=65536

$ cat /Library/LaunchDaemons/limit.maxfiles.plist
<?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>200000</string>
          <string>200000</string>
        </array>
      <key>RunAtLoad</key>
        <true/>
      <key>ServiceIPC</key>
        <false/>
    </dict>
  </plist>

Hmm, estranho: na minha VM ElCap todo usuário pode alterar o limite de arquivos abertos com ulimit -n *.
klanomath

Respostas:


1

Tendo tido exatamente o mesmo problema, eu finalmente descobri que minha sequência de inicialização do bash ( .bashrcou similar) estava fazendo um ulimit -n 1024; e isso fez com que tanto o limite suave quanto o limite rígido fossem definidos; o último dos quais impediu qualquer tentativa de aumentá-lo depois, dando origem ao "bash: ulimit: open files: cannot modify limit: Operation not permitted"erro.

Então, removendo esse comando, os limites suaves e rígidos foram restaurados para os padrões aparentes do sistema 256e unlimitedrespectivamente. O último é o que lhe permitirá ulimit -n <whatever>novamente.

No seu caso, assumindo a causa é semelhante e seu Library/LaunchDaemons/limit.maxfiles.plistainda está em vigor, conforme listado, espero que ulimit -Sne ulimit -Hnirá relatar tanto para ser 200000.


0

Para mim no macOS Mojave, eu tive que definir ambos:

.bash_profile

ulimit -n 65536

.bashrc

ulimit -n 65536

Se você definir somente a partir do perfil, só poderá aumentar de 256 para 1024.

É estranho porque não há muita informação sobre isso online, eu me pergunto como os desenvolvedores gerenciam sem ele.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.