¿Los cambios en /etc/security/limits.conf requieren un reinicio?

144

¿Los cambios /etc/security/limits.confrequieren reiniciar antes de surtir efecto?

Al igual que si tengo un script que establece los siguientes límites /etc/security/limits.conf, ¿esto requiere reiniciar el sistema antes de que esos límites surtan efecto?

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
Alexej Magura
fuente
2
cerrar sesión debería ser suficiente
UVV
Edite el archivo /etc/security/limits.d/90-nproc.conf y reinicie su sistema

Respuestas:

108

No, pero debe cerrar todas las ventanas de sesiones activas. Todavía recuerdan los viejos valores. En otras palabras, cierre la sesión y vuelva a iniciarla. Cada nueva sesión remota o un shell seguro local tienen efecto en los cambios de límites .

Slyx
fuente
17
¿Qué sucede si quiero establecer los límites para un usuario que no tiene un inicio de sesión, como si quisiera establecer el nofilelímite 94000para el mongodbusuario? ¿Cómo lo hice sin reiniciar? ¿Necesitaría reiniciar el mongodbservicio?
Alexej Magura el
2
@AlexejMagura Puede modificar los límites de los procesos en ejecución con el prlimitcomando.
Bratchley
77
@Gilles, gracias por las precisiones, edité mi respuesta para evitar la ambigüedad. Sin embargo, iniciar un nuevo servicio utilizando sudo service mongodb restartes suficiente para permitir que el servicio se ejecute con los nuevos valores límite.
Slyx
66
si está usando Ubuntu, y mongodb se inicia por arranque, entonces cambiar estos límites no afectará a mongodb. Como upstartno lee / etc / security config bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669 , debe configurar limitstanza en su archivo de configuración de inicio .
HVNSweeting
55
Es otro problema. upstartpor diseño ignora los límites establecidos /etc/security/limits.conf.
Slyx
35

Aplique los cambios directamente a un proceso en ejecución si tiene instalado Prlimit (viene con util-linux-2.21)

prlimit --pid <pid> --<limit>=<soft>:<hard>

por ejemplo

prlimit --pid 12345 --nofile=1024:2048

Consulte aquí

RAM
fuente
29

Para establecer temporalmente el límite de archivos abiertos para el usuario con el que está conectado actualmente (por ejemplo, 'root'): También puede usar el ulimitcomando para cambiar los valores en su shell actual. Sin embargo, los límites estrictos solo se pueden ajustar hacia abajo a menos que sea root.

Ejemplo:

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62449
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Para cambiar nofilea 94000 puedes hacer:

ulimit -n 94000
Boogy
fuente
15

Los límites se heredan de un proceso primario a sus procesos secundarios. Los procesos que se ejecutan como root pueden cambiar los límites arbitrariamente; otros procesos no pueden aumentar los límites duros. Por lo tanto, los límites estrictos establecidos por el proceso de inicio de sesión afectan a todos los procesos en una sesión.

Si cambia /etc/security/limits.conf, esto afectará a todas las nuevas sesiones y procesos en estas nuevas sesiones. No afectará los procesos que ya se están ejecutando, ni los procesos iniciados por procesos que ya se están ejecutando.

Entonces, si necesita aumentar algunos límites, tendrá que cerrar sesión y volver a iniciarla, o iniciar otra sesión (por ejemplo ssh localhost, con o en otra consola).

Gilles
fuente
4

Para citar la respuesta de @ Tombart

Estos límites se aplicarán después del reinicio.

Si desea aplicar cambios sin reiniciar, modifique /etc/pam.d/common-sessionagregando esta línea al final del archivo:

session required pam_limits.so
serv-inc
fuente