UbuntuでユーザーのRAMを制限する方法は? [コピー]

UbuntuでユーザーのRAMを制限する方法は? [コピー]

現在、Ubuntuを実行している専用サーバーにアカウントを持っている「友達」があります。具体的な内容は公開されていませんが、最大2GB程度を使用するとし、10GB程度を使用しているそうです。質問に答えてください。アカウントの最大サイズを3 GBに制限する方法はありますか?プロセスを終了することも機能します。

インターネット検索をしてみましたが、まだ解決策が見つかりませんでした。/

答え1

これを行うより良い方法はほぼ確実です。おそらくlimits.conf次のことを知っていますが、これは汚いハッキングです。

terdonこのコマンドは、3G以上のRAMを使用しているユーザーが所有するすべてのプロセスを終了します。

ps -u terdon -o vsize= -o pid= | 
    while read mem pid; do [ $mem -gt 3145728 ] && kill $pid; 
done

このps -u terdon -o vsize= -o pid=コマンドは、所有する各プロセスで使用されるPIDとメモリ(1024バイト単位)を印刷しますterdon。もちろん、友達のユーザー名を使用するには、それを調整する必要があります。その後、コマンドの出力はpsメモリ使用量とpidを読み込み、3145728K以上のメモリを使用している場合はPIDを終了するwhileループを介して渡されます。

これで、rootとして実行されるcrontabとして追加すると、毎分実行され、許可されたよりも多くのRAMを使用するプロセスが終了します。したがって、次の行を追加してください/etc/crontab

* * * * * root ps -u terdon -o vsize= -o pid= | while read mem pid; do [ $mem -gt 3145728 ] && kill $pid; done

私が言ったように、これはエレガントではなく醜いハッキングですが、十分です。

関連情報