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

8

Ich verwende einen Hintergrunddienst, der von Zeit zu Zeit 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 die maximale RAM-Größe von 1 GB verwenden.

Ist das machbar? Benötige ich dafür eine Art virtuelle Maschine? Ich benutze Ubuntu 9.10.

Guerda
quelle

Antworten:

10

ulimit ist dein Freund. Überprüfen Sie das Flag -m. Ich denke, Sie haben dies festgelegt, bevor Sie Ihren Prozess starten, und es gilt von da an (in der aktuellen Shell).

Basszero
quelle
Danke, netter Hinweis! Soweit ich weiß, begrenzt es den Speicher / Prozess / den Verbrauch aller Benutzer. Ich möchte es nur auf einen Benutzer / Prozess und Unterprozesse beschränken.
Guerda
1
ulimit ist ein Shell-Befehl und wirkt sich nur auf Prozesse aus, die von derselben Shell gestartet wurden, nachdem ulimit ausgeführt wurde. Sie starten den Prozess in einem Shell-Skript mit einem ulimit-Befehl, damit er nur diesen Prozess beeinflusst.
KeithB
4

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

KeithB
quelle
1
Obligatorische Manpages: linux.die.net/man/1/ulimit (Shell-Befehl) und linux.die.net/man/3/ulimit (C-Funktion).
Stephan202