====== Linux: limitar recursos usuarios ====== == systemd === un usuari # primer cop: sudo systemctl edit --force --full user-$(id -u juan).slice sudo systemctl edit user-$(id -u juan).slice [Slice] # Limitar al usuario a un máximo de 2 núcleos de CPU en total (200%) CPUQuota=200% # Limitar la memoria RAM máxima a 4 Gigabytes MemoryMax=4G MemoryHigh=3.5G # Número máximo de procesos o hilos que puede abrir a la vez TasksMax=100 # Los usuarios normales solo pueden usar los tres primeros núcleos AllowedCPUs=0-2 sudo systemctl daemon-reload === tots * tots: sudo systemctl edit user.slice * excepcions:sudo systemctl edit user-1001.slice[Slice] # Elimina las restricciones heredadas de user.slice CPUQuota= MemoryMax=infinity TasksMax=infinity == limits === un usuari sudo nano /etc/security/limits.conf # Usuario Tipo Recurso Valor juan hard nproc 50 juan hard nofile 1024 juan hard fsize 512000 === tots amb excepcions sudo nano /etc/security/limits.conf # 1. LIMITAR A TODOS POR DEFECTO * hard nproc 50 * hard nofile 1024 # 2. EXCEPCIONES (Se ponen ABAJO para que sobrescriban el comodín) root hard nproc unlimited root hard nofile 65535 tu_usuario hard nproc unlimited tu_usuario hard nofile 65535 @administradores hard nproc 200 * **hard**: Es un límite estricto que el usuario no puede modificar. (Si usas soft, el usuario puede aumentarlo temporalmente usando el comando ulimit). * **nproc**: Número máximo de procesos que puede tener abiertos a la vez (evita que sature tus procesadores con miles de tareas en segundo plano). * **nofile**: Número máximo de archivos que puede tener abiertos simultáneamente. * **fsize**: Tamaño máximo (en KB) de un archivo que puede crear (en este ejemplo, 500 MB). == comprovar límits # comprovar límits des del mateix usuari ulimit -a # des de root systemd-cgtop systemctl-cgtop /user.slice/user-1060.slice == ps, pkill ps -u nombre_usuario ps ux -U nombre_usuario ps -o pid,cmd -u nombre_usuario ps -u nombre_usuario --no-headers | wc -l sudo pkill -u nombre_usuario sudo pkill -9 -u nombre_usuario sudo killall -u nombre_usuario == expulsar who sudo pkill -9 -t pts/2 == top, htop * top -u nombre_usuario * Amb ''top'' obert, tecla u * Amb ''top'' obert, tecla W + q guarda la configuració actual * Amb ''htop'', F4 o u