Answers:
in limits.conf
中的大多数值是可以通过ulimit
shell命令或setrlimit
系统调用设置的限制。它们是过程的属性。该限制独立适用于每个过程。特别是,每个进程最多可以nofile
打开文件。对用户进程累计的打开文件数没有限制。
该nproc
限制有点特殊情况,因为它确实将用户的所有过程相加。尽管如此,它仍然适用于每个进程:当一个进程调用fork
以创建一个新进程时,如果属于该进程euid的进程数大于该进程的RLIMIT_NPROC
值,则拒绝该调用。
该limits.conf
手册页解释说,限制适用于会话。这意味着会话中的所有进程都将具有这些相同的限制(除非被这些进程之一更改)。这并不意味着对会话中的进程进行任何总和(甚至没有操作系统跟踪的内容–会话的概念,但是比它更细粒度,例如每个X11应用程序倾向于结束在自己的会话中)。它的工作方式是,登录进程为自己设置了一些限制,并且所有子进程都继承了这些限制。
¹ ,和是例外,它们在登录过程中应用于拒绝或影响登录。maxlogins
maxsyslogins
chroot
limit.conf
在打开会话的时间之间进行了更改,或者是否在中设置了不同的限制(除了root,它们必须较小).profile
。
prlimit --pid $pid
在每个进程上运行,则可以有效地更改活动会话的限制。请注意,如果要在迭代过程中分叉某些进程,则可能必须执行几次。
RLIMIT_NPROC
在A中设置为2,在B中设置为3。那么B可以再派生一个进程,但是A不能。