rhel 7 将堆栈大小设置为无限

rhel 7 将堆栈大小设置为无限

我有一些旧代码需要堆栈不限于 8192kb 才能运行。我习惯这样做/etc/security/limits.conf

* stack   hard    unlimited
* stack   soft    unlimited

然而,在具有 bash shell 的本地帐户的 RHEL 7.9 中,当我执行 a 操作时,ulimit -s它仍然会响应8192.那么我修改limits.conf好像没有影响?

在有 bash shell 的终端窗口中,如果我ulimit -s unlimited先执行然后运行我的代码,我的代码运行良好。

对于 RHEL 7.9 中的所有用户,将堆栈大小全局设置为无限制的最佳方法是什么?

我是否错过了一些东西,是ulimit不是/etc/security/limits.conf同一件事?

答案1

使用极限值设置限制的命令将仅更改当前生成的进程(shell)及其子进程的限制。

例如,如果您这样做:

#With root
ulimit -s unlimited
#Switch to other user 
su - <user>
ulimit -s  ## unlimited ; because this still be a child process

但如果你这样做:

  #With root
  ulimit -s unlimited
  #Logout
  logout
  #Login as the other user then execute the following
  ulimit -s ## 8192

使用/etc/security/limits.conf将永久设置它们,但您必须重新登录(新会话)它们才能生效。

如果甚至在其中设置堆栈/etc/security/limits.conf 无效然后检查它是否已被覆盖/etc/security/limits.d/或者查看您的配置文件 ~/.bash_profile ~/.bashrc。

另请检查以上是否在 / 下可用etc/pam.d/密码验证/etc/pam.d/system-auth所以你确定/etc/security/limits.conf已加载:

session requires pam_limits.so

相关内容