用了很长时间ulimit命令,还没认真看这个命令的作用:


下面详细解释一下 ulimit -s unlimited 这个命令:


1. ulimit 是什么


2. -s 参数:stack size(栈大小)


3. unlimited 的含义


4. 使用效果

Image


5. 注意事项

  1. 风险

    • 如果递归过深或栈分配过大,可能会把系统内存(RAM)耗尽,造成 系统卡顿或 OOM(out-of-memory)
    • 因此一般只在需要时临时开启,不建议作为永久设置。
  2. 作用范围

    • 只对 当前 shell 进程及其子进程生效,不会影响全局系统设置。
    • 关闭 shell 或开新终端后会恢复默认限制。
  3. 持久化方法

    • 可以写入 ~/.bashrc~/.zshrc 等启动脚本中;
    • 或在 /etc/security/limits.conf / /etc/systemd/system.conf 等系统配置文件中设置。

6. 示例

# 查看当前栈大小限制(单位 KB)
ulimit -s

# 设置栈大小无限制
ulimit -s unlimited

# 验证修改后的值
ulimit -a | grep stack

一句话总结
ulimit -s unlimited 表示把每个线程的栈内存限制解除,让程序在需要时可以用更多的栈空间,常用于解决深递归或大局部变量导致的栈溢出问题,但要注意可能带来内存风险。