Cómo verificar si se aplican las configuraciones de ulimit en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo verificar si las configuraciones de ulimit se aplican correctamente en Linux. Explorarás diferentes métodos para comprobar los límites de recursos, comenzando por mostrar los límites de la shell actual utilizando ulimit -a.

A continuación, examinarás el archivo de configuración de todo el sistema /etc/security/limits.conf para entender cómo se establecen los límites para usuarios y grupos. Finalmente, aprenderás cómo verificar los límites reales aplicados a un proceso en ejecución inspeccionando su entrada en /proc. Este enfoque práctico proporcionará una comprensión integral de cómo funcionan los límites de recursos y cómo solucionar problemas relacionados en un entorno Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/echo -.-> lab-558811{{"Cómo verificar si se aplican las configuraciones de ulimit en Linux"}} linux/help -.-> lab-558811{{"Cómo verificar si se aplican las configuraciones de ulimit en Linux"}} linux/cat -.-> lab-558811{{"Cómo verificar si se aplican las configuraciones de ulimit en Linux"}} linux/env -.-> lab-558811{{"Cómo verificar si se aplican las configuraciones de ulimit en Linux"}} end

Mostrar límites con ulimit -a

En este paso, aprenderás sobre los límites de recursos en Linux utilizando el comando ulimit. Los límites de recursos controlan la cantidad máxima de recursos del sistema que un proceso puede utilizar. Esto es importante para la estabilidad del sistema y para evitar que un solo proceso consuma todos los recursos disponibles.

El comando ulimit te permite ver y establecer estos límites para la sesión de shell actual y cualquier proceso iniciado a partir de ella.

Para mostrar todos los límites de recursos actuales, abre tu terminal y escribe el siguiente comando:

ulimit -a

Presiona Enter.

Verás una salida similar a esta:

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

La salida muestra varios límites de recursos, como el número máximo de archivos abiertos (-n), el número máximo de procesos de usuario (-u) y el tamaño máximo de la pila (-s). El valor unlimited significa que no hay un límite impuesto para ese recurso.

Comprender estos límites es crucial para diagnosticar problemas de rendimiento o comportamiento inesperado de los programas. Por ejemplo, si un programa falla porque no puede abrir suficientes archivos, comprobar el límite de open files con ulimit -a sería un buen primer paso.

También puedes ver límites individuales especificando la opción. Por ejemplo, para ver el límite en el número de archivos abiertos:

ulimit -n

Esto mostrará un solo número que representa el límite actual para archivos abiertos.

Experimenta con el comando ulimit -a en tu terminal. Familiarízate con los diferentes tipos de límites mostrados.

Haz clic en Continuar para pasar al siguiente paso.

Verificar la configuración de límites con cat /etc/security/limits.conf

En el paso anterior, utilizaste ulimit -a para ver los límites de recursos actuales de tu sesión de shell. Estos límites a menudo se configuran a nivel de sistema en un archivo llamado /etc/security/limits.conf.

Este archivo es parte del marco de Módulos de Autenticación Intercambiables (Pluggable Authentication Modules, PAM) y permite a los administradores establecer límites de recursos para usuarios y grupos al iniciar sesión.

Veamos el contenido de este archivo de configuración utilizando el comando cat. cat es un comando simple que se utiliza para mostrar el contenido de archivos.

Abre tu terminal y escribe el siguiente comando:

cat /etc/security/limits.conf

Presiona Enter.

Verás el contenido del archivo limits.conf. La salida se verá algo así (los comentarios y las entradas específicas pueden variar):

## /etc/security/limits.conf
#
#This file sets the limits for the resources available to the login session of
#users and groups. It is used together with the pam_limits module.
#
## (it is recommended to use #include files from /etc/security/limits.d/)
#

#*               soft    core            0
#root            hard    core            unlimited
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           unlimited
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

Este archivo utiliza un formato simple:

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

  • <domain>: Especifica el usuario o grupo al que se aplica el límite. Puede ser un nombre de usuario, un nombre de grupo (precedido por @) o * para todos los usuarios.
  • <type>: Puede ser soft o hard.
    • Los límites soft son los límites actuales que el usuario puede aumentar (hasta el límite hard).
    • Los límites hard son los límites máximos que un usuario que no es root no puede exceder.
  • <item>: El elemento de recurso que se está limitando (por ejemplo, nproc para el número de procesos, nofile para el número de archivos abiertos).
  • <value>: El valor del límite.

Las líneas que comienzan con # son comentarios y se ignoran.

Observa la línea ## (it is recommended to use #include files from /etc/security/limits.d/). Esto indica que los límites específicos del sistema o de la aplicación a menudo se colocan en archivos separados dentro del directorio /etc/security/limits.d/. Esto ayuda a mantener el archivo principal limits.conf limpio y organizado.

Si bien no modificarás este archivo en este laboratorio, entender su estructura y propósito es importante para la administración del sistema. Los límites que viste con ulimit -a a menudo se derivan de la configuración en este archivo y en los archivos de limits.d.

Haz clic en Continuar para pasar al siguiente paso.

Verificar los límites de proceso con cat /proc/self/limits

En los pasos anteriores, aprendiste sobre ulimit para ver los límites de la sesión actual y /etc/security/limits.conf para la configuración a nivel de sistema. Ahora, veamos cómo un proceso en ejecución informa sobre sus propios límites.

Linux proporciona un sistema de archivos virtual llamado /proc que contiene información sobre los procesos en ejecución y el núcleo del sistema. Cada proceso en ejecución tiene un directorio bajo /proc nombrado según su Identificador de Proceso (Process ID, PID).

El directorio especial /proc/self es un enlace simbólico que apunta al directorio /proc del proceso que lo accede. Entonces, cuando estás en tu terminal y accedes a /proc/self, estás viendo la información del proceso de tu shell actual.

Dentro del directorio /proc/self, hay un archivo llamado limits que contiene los límites de recursos para ese proceso específico.

Veamos los límites de tu proceso de shell actual utilizando cat:

cat /proc/self/limits

Presiona Enter.

Verás una salida similar a esta:

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             unlimited            unlimited            processes
Max open files            1048576              1048576              files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       <placeholder>        <placeholder>        signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

Esta salida muestra el Soft Limit (límite flexible) y el Hard Limit (límite estricto) para cada recurso, similar a lo que viste con ulimit -a. Los valores aquí reflejan los límites reales aplicados al proceso que ejecutó el comando cat (tu shell).

Compara la salida de cat /proc/self/limits con la salida de ulimit -a del primer paso. Deberías ver que los valores son consistentes, ya que ulimit -a informa sobre los límites del proceso de shell actual.

El sistema de archivos /proc es una herramienta poderosa para inspeccionar el estado de tu sistema Linux y sus procesos. El archivo limits dentro del directorio de cada proceso proporciona una forma directa de verificar los límites de recursos que están en efecto para ese proceso específico.

Ahora has aprendido tres formas diferentes de interactuar con los límites de recursos en Linux: ver los límites de la sesión actual con ulimit -a, examinar la configuración a nivel de sistema en /etc/security/limits.conf y comprobar los límites de un proceso específico a través de /proc/<PID>/limits (o /proc/self/limits).

Haz clic en Continuar para completar este laboratorio.

Resumen

En este laboratorio, aprendiste cómo verificar si se aplican las configuraciones de ulimit en Linux. Comenzaste utilizando el comando ulimit -a para mostrar los límites de recursos actuales de la sesión de shell, y comprendiste los diversos límites como archivos abiertos, procesos de usuario y tamaño de pila. Este comando proporciona una visión general rápida de los límites heredados por los procesos lanzados desde el shell actual.

A continuación, exploraste el archivo de configuración a nivel de sistema /etc/security/limits.conf utilizando cat. Este archivo define los límites de recursos predeterminados para usuarios y grupos, que se aplican al iniciar sesión. Finalmente, verificaste los límites de recursos reales de un proceso en ejecución examinando /proc/self/limits, que muestra los límites efectivos para el proceso actual, lo que demuestra cómo verificar los límites aplicados a una instancia de proceso específica.