Definir limite máximo de arquivo em um processo em execução

26

Eu tenho um longo processo em execução que eventualmente atingirá o limite máximo de arquivos abertos. Eu sei como mudar isso depois de falhar, mas existe uma maneira de mudar isso para o processo em execução, a partir da linha de comando?

    
por kāgii 12.11.2010 / 16:45

5 respostas

24

Em novos kernels (2.6.32+) no CentOS / RHEL você pode mudar isso em tempo de execução com / proc / < pid > / limits:

cd /proc/7671/
[root@host 7671]# cat limits  | grep nice
Max nice priority         0                    0                    
[root@host 7671]# echo -n "Max nice priority=5:6" > limits
[root@host 7671]# cat limits  | grep nice
Max nice priority         5                    6                    
    
por 08.12.2011 / 15:55
22

Como documentado aqui , o comando prlimit , introduzido com o util-linux 2.21 permite que você leia e altere os limites dos processos em execução.

Este é um acompanhamento do /proc/<pid>/limits gravável, que não foi integrado ao kernel principal. Esta solução deve funcionar.

Se você ainda não tem prlimit(1) , pode encontrar o código em uma versão minimalista no prlimit(2) manpage .

    
por 03.09.2013 / 16:54
2

Você pode tentar o ulimit man ulimit com a opção -n, mas a página da revista não possui a maioria dos sistemas operacionais que não permitem que isso seja definido.

Você pode definir um limite de descrições de arquivos do sistema usando sysctl -w fs.file-max=N e fazer as alterações persistirem após a inicialização em /etc/sysctl.conf

No entanto, eu também sugiro olhar o processo para ver se ele realmente precisa ter tantos arquivos abertos em um determinado momento, e se você pode de fato fechar alguns arquivos e ser mais eficiente no processo.

    
por 12.11.2010 / 16:54
2

Na versão mais recente do util-linux-ng você pode usar o comando prlimit, para mais informações, leia este link link

    
por 03.09.2013 / 17:44
0

O processo pode alterar seus próprios limites flexíveis se programado para isso (ou se você conseguir corta-lo), mas não pode aumentar seus limites rígidos a menos que tenha o recurso CAP_SYS_RESOURCE. Você pode inspecionar os limites em tempo de execução em /proc/$pid/limits .

    
por 13.11.2010 / 00:41