Eu tenho um processo em execução como usuário do gearman e quero mudar open files
para evitar esse erro grave:
ERRO 2014-09-12 17: 49: 14.000000 [main] accept (Muitos arquivos abertos) -> libgearman-server / gearmand.cc: 788
Como posso executar o ulimit como outro usuário no Ubuntu e alterar os arquivos abertos? No momento, não faço login como artesão, mas tenho acesso root. Eu tentei fazer isso:
su gearman --shell /bin/bash --command "ulimit -n"
como recomendado aqui, mas nada de saída:
$ su gearman --shell /bin/bash --command "ulimit -n"
Password:
$
Quando você executa o
ulimit
comando, ele afeta apenas o processo que está sendo executadoulimit
(o shell) e todos os subprocessos. Portanto, quando você executabash --command "ulimit -n"
, ele afeta apenas o número de arquivos abertos para essa instância do bash e, em seguida, o bash sai, portanto, processos futuros não são afetados.Portanto, para realizar o que você deseja (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 seu usuário específico do gearman.Veja exemplos de limits.conf em outro lugar ou aqui .
fonte
more /proc/<proc_id>/limits
... talvez valha a pena adicionar uma resposta para a resposta #/etc/security/limits.conf
Tente usar
su - <USERNAME> -c ulimit' -Hn'
. Acabei de o testar no CEntOS 7 e funciona.fonte
<USERNAME>
não for possível fazer o login (possui o shell nologin).