現在、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
私が言ったように、これはエレガントではなく醜いハッキングですが、十分です。