如何在不重启的情况下永久增加堆栈限制

如何在不重启的情况下永久增加堆栈限制

我需要增加 Linux 上的默认堆栈大小。据我所知,通常有两种方法:

  • ulimit -s size
  • /etc/security/limits.conf

仅当我登录时,ulimit 方法才有效。

重启后 limits.conf 将起作用。

有没有可以在不重启的情况下增加限制的方法?

答案1

每次启动终端会话时编辑.bashrc文件以执行某项操作有什么问题?ulimit -s size

答案2

如果你想以编程方式执行此操作,你可以使用setrlimit()功能。

答案3

Linux(以及一般 POSIX 兼容系统)继承fork()当启动新进程时(使用或) ,现有进程的限制会exec()发生变化。因此,您只需更改所有现有流程已在系统上运行的进程。配置文件仅定义系统启动后初始进程的值,其他所有内容均继承父进程的当前值。

为什么你要增加所有东西的堆叠限制?全部由于某种原因,您现有的流程立即需要增加堆栈空间?

如果您确实需要在某个进程启动后更改该进程的限制,则可以使用后台prlimit使用内核接口的命令来执行此操作。它在许多用例中都需要,因此您通常需要在实践中运行它。int prlimit(pid_t pid, int resource, const struct rlimit *new_limit, struct rlimit *old_limit)CAP_SYS_RESOURCEroot

答案4

limits.conf 不需要重新启动。

它只需要一个新的会话即可工作。

您需要注销并重新登录。

相关内容