ubuntu - 限制进程在其生命周期内可以打开的文件描述符的数量

标签 ubuntu process linux-kernel file-descriptor ulimit

我在基于 debian 的系统上。我试图解决的漏洞之一是创建多个 零字节 文件,这往往会耗尽文件系统中可用的 inode。

我的系统允许用户在沙盒环境中执行代码,并且设置了所有资源限制(内存、cpu、进程、STDOUT 等)。我无法设置的一个资源限制是进程可以创建的文件总数。

问题的存在是因为沙箱中存在少量全局可写目录,并且由于其他限制无法撤销对执行进程的文件创建权限。

  1. ulimit 具有打开文件 (-n) 选项,但这仅指一个进程可以打开的并发文件描述符的数量。

  2. 我尝试探索磁盘配额,但这看起来像是对用户可以创建的 inode 数量的用户特定限制。理想情况下,我希望这是进程限制而不是用户限制。

Q1) 是否没有可靠的方法来限制进程在其生命周期内可以创建的文件描述符的数量?

Q2) 是否有任何低开销监控工具来跟踪进程调用 open(O_CREAT) 的次数?

最佳答案

您可以使用 setrlimit(2) 限制进程内的资源(可以与 bash 内置 ulimit 一起使用)。

可以设置disk quotas在文件系统上。

没有更多细粒度的方法。

Any low overhead monitoring tool to keep track of the number of open(O_CREAT) calls by a process?

您可以使用 inotify(7) 监控文件的创 build 施。

您可能会编写和使用一些 FUSE满足您需求的文件系统。

另请查看 containers , 也许 Docker .

关于ubuntu - 限制进程在其生命周期内可以打开的文件描述符的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49128511/

相关文章:

ubuntu - 如何在 Ubuntu 14.04 上安装 MarkLogic 8?

android - 我可以将任何安卓设备与 ubuntu 连接吗?

c++ - Qt qbs 项目设置与库未找到编译错误

linux - Ubuntu 更新管理器的问题

c# - 如何逐行读取标准输出?

Java 进程终止 - onEnd()?

linux - 如何使用 vlc、eclipse 等自定义软件包构建 CentOS ISO?

c# - 防止进程在 C# 中被杀死?

linux - Linux内核中哪些内核线程负责发送网络数据包

复制到用户 : treating more data