Cómo establecer límites para los procesos de ejecución de usuarios en Linux


Una de las bellezas de Linux es que puedes controlar casi todo al respecto. Esto le da al administrador del sistema un gran control sobre su sistema y una mejor utilización de los recursos del sistema.

Si bien es posible que algunos nunca hayan pensado en hacer esto, es importante saber que en Linux puede limitar la cantidad de recursos que un usuario puede usar y por cuánto tiempo.

En este breve tema, le mostraremos cómo limitar la cantidad de procesos iniciados por el usuario y cómo verificar los límites actuales y modificarlos.

Antes de seguir adelante hay dos cosas que debemos señalar:

  1. You need root access to your system to modify the user limits
  2. You must be extremely careful if you plan to modify these limits

Para configurar los límites de usuario, necesitaremos editar el siguiente archivo:

/etc/security/limits.conf

Este archivo se utiliza para aplicar ulimit creado por pam_module .

El archivo tiene la siguiente sintaxis:

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

Aquí nos detendremos para discutir cada una de las opciones:

  • Domain – this includes usernames, groups, guid ranges etc
  • Type – soft and hard limits
  • Item – the item that will be limited – core size, file size,  nproc etc
  • Value – this is the value for the given limit

Una buena muestra para un límite es:

@student          hard           nproc                20

La línea anterior establece un límite máximo de 20 procesos en el grupo student .

Si desea ver los límites de un determinado proceso, simplemente puede "cat" el archivo de límites de este modo

# cat /proc/PID/limits

Donde PID es el ID del proceso real, puede averiguar el ID del proceso mediante el comando ps . Para una explicación más detallada, lea nuestro artículo que dice: Encuentre procesos en ejecución en Linux y establezca límites de proceso por nivel de usuario

Así que aquí hay un ejemplo:

# cat /proc/2497/limits
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             32042                32042                processes 
Max open files            1024                 4096                 files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       32042                32042                signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us   

Todas las líneas son bastante autoexplicativas. Sin embargo, si desea encontrar más configuraciones que puede ingresar en el archivo limits.conf , puede consultar el manual que se proporciona aquí.

Si tiene alguna pregunta o comentario, no dude en enviarlos en la sección de comentarios a continuación.