在Linux中,存在打开文件限制。我可以ulimit -n
用来查看打开文件的限制,默认为1024。然后,我还可以通过查看/ proc / $ PID / limits来查看每个进程打开文件的软/硬限制。我看到软= 1024和硬= 4096。
我想知道这两个输出之间有什么区别?
此外,这样做setRlimit()
,并getRlimit()
适用于全系统或每个进程?
在Linux中,存在打开文件限制。我可以ulimit -n
用来查看打开文件的限制,默认为1024。然后,我还可以通过查看/ proc / $ PID / limits来查看每个进程打开文件的软/硬限制。我看到软= 1024和硬= 4096。
我想知道这两个输出之间有什么区别?
此外,这样做setRlimit()
,并getRlimit()
适用于全系统或每个进程?
Answers:
ulimit -n
默认设置软限制;您可以添加-H
选项以查看/设置硬限制。
在大多数情况下,软限制和硬限制的行为如下:
CAP_SYS_RESOURCE
)可能会提高或降低任何进程的限制。因此,硬限制充当软限制的上限(根用户除外,后者通常可以执行任何操作)。
有一个例外:软CPU限制发送SIGXCPU
信号。进程可以选择忽略它,或者花费时间进行清理等。一旦超过了硬CPU限制,内核就会发送SIGKILL
-这是不可捕获的,不可处理的或不可忽略的。因此,在这种情况下,软限制会发出警告“您的CPU时间已用完,请立即完成并退出,否则!” 硬限制是“否则”。
大多数是每个进程的,但RLIMIT_NPROC
每个用户只有几个(例如)。所述getrlimit(2)手册页指定每个限制。
ulimit -n
?它不影响已经触发的进程,仅影响外壳程序和将来的进程。除此之外,该过程可能会将其软限制提高到硬限制。这样您就可以ulimit -H -n
停止它了。