Comment puis-je restreindre l'utilisation de la RAM pour un utilisateur ou un processus particulier?

8

J'utilise un service d'arrière-plan qui fuit de la mémoire de temps en temps. Pour éviter d'utiliser le Alt+ SysRq REISUB[ 1 ], je voudrais restreindre l'utilisation de la RAM pour un processus ou un utilisateur système.

Je voudrais vraiment dire: l'utilisateur x peut utiliser la quantité maximale de RAM de 1 Go.

Est-ce faisable? Ai-je besoin d'une sorte de machine virtuelle pour cela? J'utilise Ubuntu 9.10.

guerda
la source

Réponses:

10

ulimit est votre ami. Découvrez l'indicateur -m. Je pense que vous définissez cela avant de lancer votre processus et cela s'applique à partir de là (dans le shell actuel).

basszero
la source
Merci, joli indice! Si je comprends bien ulimit, cela limite tous les utilisateurs mémoire / processus / quelle que soit la consommation. J'aime juste le limiter à un utilisateur / processus et sous-processus.
guerda
1
ulimit est une commande shell, et n'affecte les processus démarrés à partir du même shell qu'après l'exécution d'ulimit. Vous démarrez le processus dans un script shell avec une commande ulimit pour qu'il affecte uniquement ce processus.
KeithB
4

En plus des commandes shell ulimit(pour bash) ou limit(pour csh), vous pouvez contrôler cela depuis l'intérieur de votre code avec la ulimit()fonction.

KeithB
la source
1
Pages de manuel obligatoires: linux.die.net/man/1/ulimit (commande shell) et linux.die.net/man/3/ulimit (fonction C).
Stephan202