我们可以在 /etc/sysconfig/init 文件中设置 ulimit 以在启动时应用该值吗?

我们可以在 /etc/sysconfig/init 文件中设置 ulimit 以在启动时应用该值吗?

我需要在启动时为所有服务设置 ulimit 值。我在 /etc/sysconfig/limits.conf 中设置了值,但这些值在启动时不适用,并且默认为 1024。

我已经在 limits.conf 中设置了值,还检查了 /etc/pam.d/* 是否包含“required pam_limits.so”条目,甚至 /etc/security/limits.d/90-nproc.conf 没有默认条目。

现在我找到了另一种在启动时包含该值的方法,我遇到了 /etc/sysconfig/init 文件。当我在此文件中设置该值时,所有服务在启动时都会获得预期值。

现在,我不确定这会对服务器产生什么影响,以及应该忽略此 /etc/sysconfig/init 文件中的哪些配置。此外,除了此文件或上述方法之外,还有其他替代方案吗?

答案1

ulimits 不是特定于服务或系统范围的,而是特定于单个帐户的。软限制/etc/security/limits.conf应该是启动服务时默认显示的内容;这似乎不会发生在您的案例中,因此我将开始查看运行相关服务的用户的点文件或相关服务的实际 init 脚本。我感觉您的 ulimit 是在这两个地方之一设置的,因此会覆盖这些/etc/security/limits.conf值。

答案2

我使用你说的方法来设置ulimitApacheumask用户创建的文件。也就是说,我编辑/etc/init.d/httpd并在那里包含了umaskulimit -s配置,这解决了我的问题,所以我想这是一个很好的解决方案。除了预期的影响之外,它没有任何影响。

答案3

该文件/etc/security/limits.conf由 PAM 使用,但用户登录时会使用 PAM。但是,启动服务时不会经过 PAM,因此这无济于事limits.conf。服务由 init 系统启动,其设置取决于所使用的系统。如果您使用的是 upstart,则可以在/etc/sysconfig/init系统范围或/etc/sysconfig/<servicename>每个服务中进行设置。在 systemd 世界中,可以通过 usint 在服务文件中设置 ulimits Limit<type>=,我不确定如何在系统范围内进行设置。使用 OpenRC,您可以rc_ulimit=在 中为每个服务或系统范围进行设置/etc/rc.conf

相关内容