`launchctl limit`和`ulimit`之间是什么关系?


11

系统启动文件/外壳启动脚本中没有任何ulimit配置。

ulimit -a 显示:

-u: processes                       1064
-n: file descriptors                256

launchctl limit 显示:

maxproc     2048           2048           
maxfiles    2048           2048

我模糊地记得,launchctl的限制应该与shell的ulimit输出匹配,我可能是错的。

lauchctl的极限和ulimit之间有任何关系吗?


您从命令的手册页中没有得到满意的答案吗?
Andrew U.14年

@AndrewU。launchctl手册页未提及限制,ulimit手册页未提及launchctl或已启动。
霍华德

Answers:


10

在Shell中,ulimit提供了“对Shell可用资源以及由Shell启动的进程的控制”(请参阅​​参考资料man bash)。因此,它仅适用于外壳及其子级。启动的限制与它及其管理的流程有关。两者是分开的。

单个程序可以通过调用标准C库例程设定自己的资源限制ulimit()getrlimit()setrlimit()。除非进程以超级用户身份运行,否则无法提高某些资源限制。

作为一个实际示例,我调试了大型软件项目,并且外壳程序对打开文件数量的默认限制不够大。在我的.bashrc文件中,我具有以下内容:

# Increase the upper limit on the number of open files:
ulimit -n 1024

现在,我的调试器将不会抱怨它无法打开所需的所有文件。显然,这应该对启动没有影响。


1
详细说明:默认ulimit设置源自launchctl limit; 尽管用户可以更改ulimit数字,但是它们不能超过launchctl limit硬限制。
霍华德

这将在重启时重置
EngineerDave
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.