如何为非 root 用户设置‘每个进程的最大线程数’ ulimit?

如何为非 root 用户设置‘每个进程的最大线程数’ ulimit?

Ulimit 手册页建议使用 -r 选项进行设置,但它似乎仅对 root 用户有效,并且没有通过 /etc/security/limits 进行设置的等效方法?

有任何想法吗?

答案1

您说的是 AIX,但在 Linux 中,我认为它只是-u限制开关。在 Linux 中,它表示“进程”,但在 bash 中,ulimit 只是 setrlimit 系统调用的一个接口。运行以下命令可以看到这一点,strace bash -c 'ulimit -u 10'它返回:

setrlimit(RLIMIT_NPROC, {rlim_cur=10, rlim_max=10}) = 0

setrlimit 的手册页指出:

RLIMIT_NPROC 最大进程数(或者更准确地说,在 Linux 上,线程),可以为调用进程的真实用户 ID 创建。 遇到此限制时,fork(2) 会失败并出现错误 EAGAIN。

那么对于 AIX 来说也许也是一样吗? 此链接状态:“AIX 没有定义 RLIMIT_NPROC 或 RLIMIT_MEMLOCK 资源。”,但您也许能够在 developerworks 上找到更明确的答案。

对于权限问题,解决方案可能是使用 root 设置限制,然后 su 到需要增加限制的用户。过去,我不得不对其他资源限制(例如,最大打开文件数)执行此操作。由于 limits.conf 未应用,因此我不得不从 root 使用 sudo 或 su,然后限制就会被继承。

相关内容