プロセスごとにディスククォータを設定するには?

プロセスごとにディスククォータを設定するには?

Linuxで特定のプロセスが使用できるディスククォータを設定したい(ファイルシステムで使用される最大容量制限)。ユーザーのディスククォータを制限する方法があるようですが、プロセス固有の粒度はありません。私が考えることができる1つのアプローチは、プロセスごとにユーザーを作成することです。しかし、想像できるように、これは素晴らしい解決策ではありません。

答え1

プロセスがファイルを所有していないため、ディスククォータを持つことができないため、他のユーザーアカウントで処理することが唯一の方法である可能性が高くなります。

より明確に言えば、このようなカーネルパッチを開発すると、現在使用されている最大ファイルのクォータを管理できますが、以前に作成され閉じられたファイルを追跡することは依然として意味を持たず、単に責任範囲に含まれません。

これらの欠陥のあるパッチを実装すると、大幅なパフォーマンス低下が発生し、複数のプログラムで同じファイルが開いている状況では意味がありません。

これらの理由や他の多くの理由により、理論的には正しく実行できません。

答え2

ulimitを使用することもできます。まさにクォータではありませんが、似ています。

ulimit -f 1000

現在のシェルまたは現在のシェルから呼び出されたプロセスによって生成されたファイルの最大サイズをそれぞれ1000 KBに制限します。私が言ったように、必要に応じてプロセスは制限内で多くのファイルを書き込むことができるため、クォータではありませんが、実行したい操作に応じて機能することができます。

tcshでは、コマンドはulimitの代わりにlimitであり、わずかに異なる構文を使用できます。

関連情報