有什么方法可以通过现有命令或 API 来从 Linux 用户空间的 user_struct 获取信息吗?
即,能够获取由 ULIMITS 控制的用户当前打开的文件和任务的数量
答案1
我查看了内核源代码(特别是linux/用户.c我没有找到任何系统调用定义或/proc
条目管理......
所以我猜没有 API 可以做到这一点:-(
所以你有2个解决方案:
您可以开发一个内核模块来为每个用户实现一个`/proc/̀ 条目,该条目将转储这些统计信息。
您可以解析
/proc/<pid/
条目(目录由进程所有者拥有),并且对于目标用户拥有的每个进程,解析fd
、stat
等...文件。
答案2
一个简单的
man ulimit
为您提供用户限制的一般描述,以及(在联机帮助页底部)“另请参阅”部分。在那里你可以找到:
获取限制(2)
这意味着,有一个名为“getrlimit()”的系统调用(联机帮助页第 2 节)。所以,当你做一个
man 2 getrlimit
您将获得检索用户限制结构所需的所有信息。