我正在读一本SU 问题在设置 ulimit 值时,Gordon 的回答提到了打开文件描述符数量的硬限制和软限制。只是好奇,为什么我们首先需要硬限制和软限制?这背后有什么好处?不求助于硬限制和软限制区分,只设置一个单一限制不是更简单吗?
顺便说一句,我已经检查了手册页,它没有讨论有关 ulimit 的任何具体内容
答案1
我们对其他所有东西都设置硬限制和软限制的原因相同。硬限制是为了保护用户免受彼此的侵害。如果一个用户可以无限制地使用资源,那么这将降低所有其他用户的系统性能/响应。软限制是为了保护用户免受他们自己的侵害,而打开文件数就是一个完美的例子。您可能需要一次打开 300 个文件,如果您的硬限制为 300 或更高,那么您可以这样做。(如果您的软限制低于 300,那么您需要增加它——您可以这样做,直到达到您的硬限制。)但很少有程序需要一次打开 300 个文件。如果您的程序这样做,它可能有一个错误,它会打开文件并且无法关闭它们,即使它已经使用完了。在这种情况下,当程序尝试打开第 101 个文件时,您可能最好发现它;这将节省您的时间,并且可能让您在别人之前发现程序中的错误。