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

Jon*_*Jon 5 unix ulimit

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

有任何想法吗?

Kyl*_*ndt 3

你说的是 AIX,但对于 linux,我认为这只是-u限位开关。在 Linux 中,这表示“进程”,但对于 bash,ulimit 只是 setrlimit 系统调用的接口。strace bash -c 'ulimit -u 10'通过运行返回结果可以看出:

setrlimit(RLIMIT_NPROC, {rlim_cur=10, rlim_max=10}) = 0
Run Code Online (Sandbox Code Playgroud)

setrlimit 的手册页指出:

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

那么对于 AIX 来说也许也是一样的? 此链接指出:“AIX 未定义 RLIMIT_NPROC 或 RLIMIT_MEMLOCK 资源。”,但您也许可以在developerworks 上找到更明确的答案。

对于权限问题,解决方案可能是使用 root 设置限制,然后 su 到您需要增加限制的用户。过去我必须对其他资源限制执行此操作,例如最大打开文件数。limit.conf 没有应用,所以我必须从 root 使用 sudo 或 su,然后限制就会被继承。