Como faço para verificar o ulimit para outro usuário e alterar arquivos abertos?

17

Eu tenho um processo em execução como usuário gearman e quero alterar open files para evitar esse erro desagradável:

ERROR 2014-09-12 17:49:14.000000 [ main ] accept(Too many open files) -> libgearman-server/gearmand.cc:788

Como posso executar o ulimit como outro usuário no Ubuntu e alterar arquivos abertos? Atualmente, não faço login como engenheiro, mas tenho acesso root. Eu tentei fazer isso:

su gearman --shell /bin/bash --command "ulimit -n"

como recomendado aqui mas a saída de nada é obtida:

$ su gearman --shell /bin/bash --command "ulimit -n"
Password: 
$
    
por Tony 12.09.2014 / 20:09

3 respostas

21

Revisitando isso apenas porque deparei com ele durante uma pesquisa no Google e achei o comentário de Tony útil: É verdade que os limites são colocados no nível do processo, a maneira que você determinaria os limites estabelecidos para um usuário em particular seria encontrar os processos que eles iniciaram e, em seguida, verificar o proc/${id}/limits .

Especificamente:

$ ps -u username  # look up processes owned by user
$ sudo grep 'open files' /proc/${id}/limits  # find "Max open files" line for process ID
    
por 01.10.2015 / 02:01
5

Quando você executa o comando ulimit , ele afeta apenas o processo que está executando ulimit (o shell) e todos os subprocessos. Portanto, quando você executar bash --command "ulimit -n" , isso afetará apenas o número de arquivos abertos para essa instância do bash e, em seguida, o bash sairá, portanto, futuros processos não serão afetados.

Então, para realizar o que você quer (para aumentar o limite de arquivos abertos para o seu processo real), provavelmente faz mais sentido editar limits.conf para aumentar o limite de arquivos abertos para o seu usuário gearman específico.

Veja exemplos de limits.conf em outro lugar ou aqui .

    
por 12.09.2014 / 22:51
1

Tente usar su - <USERNAME> -c ulimit' -Hn' . Acabei de testar no CEntOS 7 e funciona.

    
por 31.01.2018 / 11:31

Tags