GNU/Linux >> Tutoriales Linux >  >> Linux

Controle el uso de recursos del sistema con el comando Ulimit

En este tutorial para principiantes, aprenderá sobre el comando ulimit en Linux. Aprenderá a usarlo para controlar las asignaciones de recursos del sistema.

¿Que es ulimit en Linux?

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

Este tipo de control se puede aplicar a nivel global, de grupo y de usuario. Además de garantizar un procesamiento fluido de las tareas, evita que los procesos no deseados puedan devorar los recursos del sistema, como la memoria RAM y la potencia de la CPU.

Ulimit está vinculado a un archivo de configuración de seguridad. Su ubicación exacta puede variar, pero normalmente es algo como /etc/security/limits.conf . Ulimit nos permite editar esa configuración rápidamente.

Límites blandos vs. duros

Como usuario, puede ajustar su configuración ulimit.

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

Entonces, desde la perspectiva del administrador, es posible que prefiera que su usuario se mueva alrededor de un valor determinado. Este sería su límite suave (digamos 25).

Luego, podría establecer un límite estricto que ese usuario no podría exceder (50). El usuario estaría autorizado a aumentar su límite de 25 a 50.

Usando ulimit en Linux

Esta es la sintaxis del comando ulimit:

ulimit <options>

Mostrar todos los límites para cualquier usuario

Puede mostrar todo tipo de límites 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, muestra los límites para usted. Déjame mostrarte los límites establecidos para mí por defecto:

[email protected]:~$ 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 una descripción, la bandera asignada (que se puede usar para cambiar los límites) y la configuración.

Mostrar límites estrictos y flexibles

También es posible ver cualquiera de estos límites respectivos con una bandera.

Para mostrar límites flexibles, use la opción -S:

ulimit -S

Para mostrar límites estrictos, use la opción -H:

ulimit -H

Es más útil combinarlos con banderas específicas de arriba. Entonces, si desea verificar el límite estricto en la cantidad máxima de procesos de usuario, debe escribir:

[email protected]:~$ ulimit -Hu
31503

Cambiar los límites (temporalmente)

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

[email protected]:~$ ulimit -u 31500
[email protected]:~$ ulimit -Hu
31500

Vale la pena señalar que cualquier cambio que le permita su privilegio solo se escribirá temporalmente y afectará su caparazón actual.

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

[email protected]:~$ ulimit -Hu
31503

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

Hacer cambios permanentes a ulimit

Como mencioné al comienzo del artículo, ulimit se rige por /etc/security/limits.conf. Si desea realizar cambios permanentes en los ulimits de cualquier usuario, deberá realizar cambios en el archivo de seguridad como root.

Al editar, debe incluir estos cuatro elementos:

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

Aquí está el texto que agregué al archivo para establecer el 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 habilitar la cuenta raíz a menos que sea plenamente consciente de las posibles consecuencias. He hecho esto en una máquina virtual para que no tengas que hacerlo tú mismo.

[email protected]:~$ su
Password: 
[email protected]:/home/christopher# nano /etc/security/limits.conf 
[email protected]:/home/christopher# exit
exit
[email protected]:~$ ulimit -u
20000

Como puede ver, el límite de 'christopher' se cambió a 20000.

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

Palabra clave del elemento Descripción
núcleo limita el tamaño del archivo principal (KB)
datos tamaño máximo de datos (KB)
fsize tamaño máximo de archivo (KB)
bloqueo de memoria espacio máximo de direcciones bloqueado en la memoria (KB)
sin archivo número máximo de descriptores de archivos abiertos
rss tamaño máximo del conjunto residente (KB)
pila tamaño máximo de pila (KB)
procesador tiempo máximo de CPU (MIN)
nproc número máximo de procesos
como límite de espacio de direcciones (KB)
inicios de sesión máximos número máximo de inicios de sesión para este usuario
maxsyslogins número máximo de inicios de sesión en el sistema
prioridad la prioridad para ejecutar el proceso de usuario con
bloqueos número máximo de bloqueos de archivos que el usuario puede mantener
pendiente de firma número máximo de señales pendientes
cola de mensajes :memoria máxima utilizada por las colas de mensajes POSIX (bytes)
agradable máxima prioridad agradable permitida para elevar a valores:[-20, 19]
rtprio prioridad máxima en tiempo real
chroot cambiar raíz a directorio (específico de Debian)

Cambiar ulimit para grupos

Cambiar una política de grupo es muy similar a lo que vio en la sección anterior, pero incluirá un @ símbolo antes del nombre del grupo.

Aquí hay un ejemplo en el que configuro el número máximo de inicios de sesión para el grupo de estudiantes en 4 editando el archivo /etc/security/limits.conf:

@student    -   maxlogins   4

Conclusión

Espero que les haya gustado este manual básico sobre el comando ulimit de Linux.

Si tiene algún comentario o pregunta, déjelos a continuación. Si tiene alguna sugerencia sobre temas que le gustaría ver cubiertos, no dude en dejarlos también.


Linux
  1. Comandos acoplados con operadores de control en Bash

  2. Cómo monitorear el sistema Linux con el comando Glances

  3. Comando de apagado de Linux (con ejemplos)

  4. ¿Convertir un enlace simbólico absoluto en un enlace simbólico relativo con un comando simple de Linux?

  5. Cómo controlar el uso de recursos del sistema con ulimit en Linux

Comando Usermod con ejemplos

Cómo visualizar el uso del espacio en disco con Vizex

Modificar cuentas de usuario con el comando Usermod

Eliminar usuarios en Linux con el comando Userdel

Uso del comando Linux mv con ejemplos

Uso del comando sed de Linux con ejemplos

    Tipo de límite Descripción
    duro límite estricto
    suave límite flexible
    límite rígido y flexible