我需要增加 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_RESOURCE
root
答案4
limits.conf 不需要重新启动。
它只需要一个新的会话即可工作。
您需要注销并重新登录。