¿Cómo puedo restringir el uso de RAM para un usuario o proceso en particular?

8

Estoy usando un servicio en segundo plano que pierde memoria de vez en cuando. Para evitar el uso de Alt+ SysRq REISUB[ 1 ], me gustaría restringir el uso de RAM para un proceso o un usuario del sistema.

Realmente me gustaría decir: el usuario x puede usar la cantidad máxima de RAM de 1 GB.

¿Es esto factible? ¿Necesito algún tipo de máquina virtual para esto? Estoy usando Ubuntu 9.10.

guerda
fuente

Respuestas:

10

Ulimit es tu amigo. Echa un vistazo a la bandera -m. Yo creo que se establece este antes de iniciar su proceso y se aplica a partir de entonces (en el shell actual).

basszero
fuente
Gracias, buena pista! Según entiendo ulimit, limita la memoria / proceso / cualquier consumo de todos los usuarios. Solo me gusta limitarlo a un usuario / proceso y subprocesos.
guerda
1
ulimit es un comando de shell, y solo afecta a los procesos iniciados desde el mismo shell después de ejecutar ulimit. Inicia el proceso en un script de shell con un comando ulimit para que afecte solo a ese proceso.
KeithB el
4

Además de los comandos de shell ulimit(para bash) o limit(para csh), puede controlar esto desde dentro de su código con la ulimit()función.

KeithB
fuente
1
Páginas de manual obligatorias: linux.die.net/man/1/ulimit (comando de shell) y linux.die.net/man/3/ulimit (función C).
Stephan202