Wie kann ich die RAM-Nutzung für einen bestimmten Benutzer oder Prozess einschränken?

8859
guerda

Ich verwende einen Hintergrunddienst, der gelegentlich Speicher verliert. Um die Verwendung von Alt+ SysRq REISUB[ 1 ] zu verhindern, möchte ich die RAM-Nutzung für einen Prozess oder einen Systembenutzer einschränken.

Ich möchte wirklich sagen: Benutzer x darf maximal 1 GB RAM verwenden.

Ist das machbar? Brauche ich dafür eine Art virtueller Maschine? Ich verwende Ubuntu 9.10.

8

2 Antworten auf die Frage

10
basszero

ulimit ist dein Freund. Überprüfen Sie das Flag -m. Ich denke, Sie haben dies festgelegt, bevor Sie den Prozess starten und er gilt ab dann (in der aktuellen Shell).

Danke, schöner Hinweis! Wenn ich Ulimit verstehe, schränkt es den Speicher / Prozess / den Verbrauch aller Benutzer ein. Ich möchte es nur auf einen Benutzer / Prozess & Unterprozesse beschränken. guerda vor 14 Jahren 0
ulimit ist ein Shell-Befehl und wirkt sich nur auf Prozesse aus, die nach der Ausführung von ulimit von derselben Shell gestartet werden. Sie starten den Prozess in einem Shellskript mit einem ulimit-Befehl, damit nur dieser Prozess beeinflusst wird. KeithB vor 14 Jahren 1
4
KeithB

Zusätzlich zu den Shell-Befehlen ulimit(für bash) oder limit(für csh) können Sie dies mit der ulimit()Funktion von Ihrem Code aus steuern .

Obligatorische Manpages: http://linux.die.net/man/1/ulimit (Shell-Befehl) und http://linux.die.net/man/3/ulimit (C-Funktion). Stephan202 vor 14 Jahren 1