echo -n "Max open files=20:20" > /proc/$pid/limits
...funciona en RHEL5.5 y RHEL6.7.
Tenga en cuenta que la "-n" es obligatoria; una nueva línea final generará una queja sobre argumentos inválidos.
Otra opción es usar el comando prlimit (del paquete util-linux). Por ejemplo, si desea establecer el número máximo de archivos abiertos para un proceso en ejecución en 4096:
prlimit -n4096 -p pid_of_process
Puede usar gdb, ingresar al proceso, llamar a las llamadas al sistema antes mencionadas para aumentar el límite que le interesa, luego continuar el trabajo y salir de gdb. He editado cosas sobre la marcha de esta manera varias veces.
Su aplicación no estaría inactiva, sino congelada por el momento mientras realizaba la llamada. si eres rápido (¡o escribes un guion!), es probable que no se note.
Como administrador del sistema :El /etc/security/limits.conf
file controla esto en la mayoría de las instalaciones de Linux; le permite establecer límites por usuario. Querrás una línea como myuser - nofile 1000
.
Dentro de un proceso :Las llamadas getrlimit y setrlimit controlan la mayoría de los límites de asignación de recursos por proceso. RLIMIT_NOFILE
controla el número máximo de descriptores de archivo. Necesitará los permisos apropiados para llamarlo.