Tengo un proceso ejecutándose como usuario de Gearman y quiero cambiar open files
para evitar este desagradable error:
ERROR 2014-09-12 17: 49: 14.000000 [main] accept (Demasiados archivos abiertos) -> libgearman-server / gearmand.cc: 788
¿Cómo puedo ejecutar ulimit como otro usuario en Ubuntu y cambiar los archivos abiertos? Actualmente no inicio sesión como gearman pero sí tengo acceso de root. Intenté hacer esto:
su gearman --shell /bin/bash --command "ulimit -n"
como se recomienda aquí, pero nada obtiene la salida:
$ su gearman --shell /bin/bash --command "ulimit -n"
Password:
$
Cuando ejecuta el
ulimit
comando, solo afecta el proceso que se está ejecutandoulimit
(el shell) y todos los subprocesos. Entonces, cuando ejecutabash --command "ulimit -n"
, solo afecta la cantidad de archivos abiertos para esa instancia de bash, luego bash sale, por lo que los procesos futuros no se ven afectados.Por lo tanto, para lograr lo que desea (aumentar el límite de archivos abiertos para su proceso real), probablemente tenga más sentido editar
limits.conf
para aumentar el límite de archivos abiertos para su usuario de Gearman específico.Ver ejemplos de limits.conf en otro lugar o aquí .
fuente
more /proc/<proc_id>/limits
... tal vez valga la pena agregar a la respuesta/etc/security/limits.conf
Intenta usarlo
su - <USERNAME> -c ulimit' -Hn'
. Lo acabo de probar en CEntOS 7 y funciona.fuente
<USERNAME>
no puede iniciar sesión (tiene el shell nologin).