ulimit
é um shell embutido, não um comando externo. Ele precisa ser construído porque age no próprio processo do shell, como cd
: os limites, como o diretório atual, são uma propriedade desse processo em particular.
sudo bash -c 'ulimit -n 4096'
funcionaria, mas alteraria o limite do processo bash invocado por sudo
, o que não ajudaria você.
Existem dois valores para cada limite: o limite rígido e o limite flexível. Apenas root pode aumentar o limite rígido; qualquer um pode diminuir o limite rígido, e o limite flexível pode ser modificado em qualquer direção com a única restrição de que não pode ser maior que o limite rígido. O limite flexível é o valor real que importa.
Portanto, você precisa providenciar que todos os seus processos tenham um limite rígido para arquivos abertos de pelo menos 4096. Você pode manter o limite flexível em 1024. Antes de iniciar o processo que requer muitos arquivos, aumente o limite flexível. Em/etc/security/limits.conf
, adicione as linhas
paislee hard nofile 4096
paislee soft nofile 1024
em que paislee
é o nome do usuário no qual você deseja executar seu processo. No shell que inicia o processo para o qual você deseja um limite maior, execute
ulimit -Sn unlimited
para aumentar o limite suave para o limite rígido.