Controle el uso de los recursos del sistema con el comando Ulimit

Hola aquí Luis. Os traigo un nuevo post sobre el sistema operativo mas molón. Un placer linuxeros.

En este tutorial para principiantes, aprenderá sobre el comando ulimit en Linux. Aprenderá a utilizarlo para controlar la asignación de recursos del sistema.

¿Qué es ulimit en Linux?

Ulimit es un comando de shell integrado diseñado para mostrar, asignar y limitar recursos. Es fundamental que cada sistema regule este tipo de control.

Este tipo de control se puede aplicar a nivel global, de grupo y de usuario. Además de proporcionar un procesamiento de tareas sin problemas, evita que los procesos no deseados consuman recursos del sistema como la RAM y la potencia de la CPU.

Ulimit está asociado con un archivo de configuración de seguridad. Tu ubicación exacta puede variar, pero por lo general es algo así /etc/security/limits.conf. Ulimit nos permite editar esta configuración rápidamente.

Límites blandos vs duros

Como usuario, puede ajustar su configuración limitada.

Quizás se pregunte por qué incluso establecer un límite si el usuario puede ajustarlo. Aquí es donde entran en juego los límites suaves y duros.

Entonces, desde el punto de vista del administrador, es posible que prefiera que su usuario se mueva por un valor determinado. Este sería su límite blando (digamos 25).

A continuación, puede establecer un límite estricto que este usuario no puede superar (50). El usuario estará autorizado a aumentar su límite de 25 a 50.

Usando ulimit en Linux

Aquí está la sintaxis del comando ulimit:

ulimit <options>

Mostrar todas las restricciones para cada usuario

Puede mostrar todo tipo de restricciones para un usuario específico de esta manera:

ulimit -a user_name

El -a flag mostrará todas las opciones y su configuración para su nombre de usuario específico.

Si omite el nombre de usuario, se muestran las restricciones. Déjame mostrarte las restricciones predeterminadas establecidas para mí:

christopher@linux-handbook:~$ 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) 31503
max locked memory       (kbytes, -l) 65536
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) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31503
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Sus valores predeterminados pueden ser diferentes a los míos, por supuesto. Esta vista muestra la descripción, la bandera establecida (que se puede usar para cambiar las restricciones) y la configuración.

Muestre bordes duros y suaves

También es posible ver cada una de estas restricciones de bandera correspondientes.

Para mostrar bordes suaves, use la opción -S:

ulimit -S

Para mostrar restricciones estrictas, use la opción -H:

ulimit -H

Es más útil combinarlos con banderas específicas en la parte superior. Entonces, si desea verificar el límite estricto para el número máximo de procesos de usuario, debe ingresar:

christopher@linux-handbook:~$ ulimit -Hu
31503

Límites de cambio (temporal)

Ahora, cambiemos este valor a 31500 para fines de demostración y verifiquemos el límite estricto nuevamente.

christopher@linux-handbook:~$ ulimit -u 31500
christopher@linux-handbook:~$ ulimit -Hu
31500

Vale la pena señalar que cualquier cambio que le permita el privilegio solo se guardará temporalmente y afectará su shell actual.

Para confirmar esto, salí de mi shell y creé una nueva terminal y obtuve el valor predeterminado original.

christopher@linux-handbook:~$ ulimit -Hu
31503

La siguiente sección le muestra cómo hacer que los cambios sean permanentes.

Haciendo cambios constantes para limitar

Como mencioné al principio del artículo, ulimit es ejecutado por /etc/security/limits.conf. Si desea realizar cambios permanentes en las restricciones de cualquier usuario, deberá realizar cambios en el archivo de protección como root.

Al editar, debe incluir estos cuatro elementos:

<domain> <type> <item> <value>

Aquí está el texto que adjunté al archivo para establecer un límite estricto en la cantidad de procesos para el usuario christoper (es decir, mi propia cuenta):

christopher    hard    nproc   2000

Tenga en cuenta que es una buena práctica no activar su cuenta principal a menos que sea plenamente consciente de las posibles consecuencias. Hice esto en una máquina virtual, por lo que no tiene que hacerlo usted mismo.

christopher@linux-handbook:~$ su
Password: 
root@linux-handbook:/home/christopher# nano /etc/security/limits.conf 
root@linux-handbook:/home/christopher# exit
exit
christopher@linux-handbook:~$ ulimit -u
20000

Como puede ver, el límite de Christopher se ha cambiado a 20.000.

¿Cómo sé qué palabra clave usar para editar el archivo /etc/security/limits.conf? Bueno, aquí hay una tabla que incluye posibles palabras clave para los elementos y sus descripciones:

Descripción de la palabra clave del artículo

centro limita el tamaño del archivo principal (KB)
datos tamaño máximo de datos (KB)
dimensiones tamaño máximo de archivo (KB)
Memlock espacio máximo de direcciones bloqueadas en la memoria (KB)
ningún archivo número máximo de descriptores de archivos abiertos
rss máx. tamaño del conjunto residente (KB)
apilar tamaño máximo de pila (KB)
procesador máx. Tiempo de CPU (MIN)
nproc número máximo de procesos
tal como límite de espacio de direcciones (KB)
maxlogini número máximo de entradas para este usuario
maxsyslogins número máximo de inicios de sesión
prioridad la prioridad con la que iniciar un proceso de usuario
Cerraduras número máximo de bloqueos de archivos que el usuario puede mantener
firma número máximo de señales de espera
msgqueue – memoria máxima utilizada por las colas de mensajes POSIX (bytes)
OK máxima prioridad agradable, permitida aumentar a valores: [-20, 19]
rtprio máxima prioridad en tiempo real
chroot cambiar la raíz del directorio (específico de Debian)

Descripción del tipo de límite

duro borde duro
suave borde suave
borde duro y suave

Cambiar ulimit para grupos

El cambio a la Política de grupo es muy similar al que vio en la sección anterior, pero incluirá @ carácter antes del nombre del grupo.

Aquí hay un ejemplo en el que establezco el número máximo de entradas para el estudiante en el grupo en 4 editando el archivo /etc/security/limits.conf:

@student    -   maxlogins   4

Conclusión

Espero que haya disfrutado de este manual rápido para el comando ulimit Linux.

Si tiene algún comentario o pregunta, déjelo a continuación. Si tiene alguna sugerencia sobre los temas que desea ver cubiertos, no dude en dejarlos también.

El Blog lo escribimos para colaborar y servir de ayuda a la gente Linux. Esperamos que os guste.

Leave a Reply