如何设置每个进程的磁盘配额?

如何设置每个进程的磁盘配额?

我想设置Linux下特定进程可以使用的磁盘配额(限制文件系统中使用的最大空间)。似乎有很多方法可以限制用户的磁盘配额,但不能以每个进程为粒度。我可以考虑的一种方法是为每个进程创建一个用户,但正如您可以想象的那样,这不是一个很好的解决方案。

答案1

使用不同的用户帐户处理它很可能是唯一可能的方法,因为进程不拥有任何文件,因此不能有磁盘配额。

为了更清楚地说明,如果您开发这样的内核补丁,您最多可以管理当前使用的文件的配额,但跟踪先前写入并关闭的文件仍然会失去意义根本不在其责任范围内。

执行这样一个有缺陷的补丁还会导致相当大的性能下降,并且在多个程序打开同一文件的情况下没有意义。

由于这些和许多其他原因,理论上它根本无法正确完成。

答案2

您也许可以使用 ulimit。这并不完全是配额,但也很相似。

ulimit -f 1000

将当前 shell 创建的任何文件或当前 shell 调用的任何进程的最大大小限制为每个 1000 KB。就像我说的,不是配额,因为如果需要,该进程可以在限制下写入一堆文件,但是,根据您想要执行的操作,它可能会起作用。

在 tcsh 中,该命令是 limit 而不是 ulimit,并且可能使用略有不同的语法。

相关内容