O limite padrão de arquivos abertos por processo é 1024 no Linux. Para certos daemons, isso não é suficiente. Assim, a pergunta: como alterar o limite de arquivo aberto para um usuário específico?
O limite padrão de arquivos abertos por processo é 1024 no Linux. Para certos daemons, isso não é suficiente. Assim, a pergunta: como alterar o limite de arquivo aberto para um usuário específico?
Respostas:
No Linux, você pode configurá-lo via limits.conf
, por exemplo, via
# cd /etc/security
# echo debian-transmission - nofile 8192 > limits.d/transmission.conf
(que define o limite máximo e mínimo para processos iniciados sob a transmissão debian do usuário para 8192)
Você pode verificar a alteração via:
# sudo -u debian-transmission bash -c "ulimit -a"
[..]
open files (-n) 8192
[..]
Se um daemon já estiver em execução, ele deverá ser reiniciado para que o novo limite seja atendido. Caso o daemon seja iniciado manualmente a partir de uma sessão do usuário, o usuário precisará efetuar login novamente para obter o novo limite.
Como alternativa, você também pode especificar limites adicionais diretamente /etc/security/limits.conf
, é claro - mas eu prefiro a .d
abordagem de diretório para melhor manutenção.
Para impor diferentes limites flexíveis / rígidos, use duas entradas, por exemplo
debian-transmission soft nofile 4096
debian-transmission hard nofile 8192
(justificativa por trás disso: o valor programável é definido após o usuário efetuar login, mas um processo do usuário pode aumentar o limite até o limite físico)
A configuração limits.conf
/ limits.d
é usada por pam_limits.so
, que é ativada por padrão nas distribuições atuais do Linux.
Há também um limite para todo o sistema no Linux /proc/sys/fs/file-max
:
Este arquivo define um limite para todo o sistema do número de arquivos abertos para todos os processos.
Por exemplo, o padrão no Ubuntu 10.04:
$ cat /proc/sys/fs/file-max
786046
O pseudo arquivo /proc/sys/fs/file-nr
fornece mais informações, por exemplo
$ cat /proc/sys/fs/file-nr
1408 0 786046
o número de identificadores de arquivos alocados (ou seja, o número de arquivos atualmente abertos); o número de identificadores de arquivo gratuitos; e o número máximo de identificadores de arquivo
Portanto, por um lado, também é necessário ajustar o file-max
limite de todo o sistema , caso este seja muito pequeno e / ou o sistema já esteja muito carregado. Por outro lado, apenas aumentar file-max
não é suficiente, porque não influencia os limites flexíveis / rígidos impostos pelo mecanismo pam_limits.
Para alterar file-max
na linha de comando (não é necessário reiniciar):
# sysctl -w fs.file-max=786046
Para alterações permanentes adicionar fs.file-max=786046
ao /etc/sysctl.conf
ou /etc/sysctl.d
.
O limite superior ativado fs.file-max
é registrado em fs.nr_open
. Por exemplo, (novamente) no Ubuntu 10.04:
$ sysctl -n fs.nr_open
1048576
(que é 1024 * 1024)
Este sysctl também é configurável.