温馨提示×

Ubuntu ulimit为何无法生效怎么办

小樊
59
2025-08-14 11:40:46
栏目: 智能运维

Ubuntu中ulimit无法生效的常见原因及解决方法如下:

一、systemd覆盖配置

  • 原因:Ubuntu 16+默认使用systemd,可能覆盖/etc/security/limits.conf的设置。
  • 解决方法
    1. 修改全局systemd限制:编辑/etc/systemd/system.conf/etc/systemd/user.conf,取消注释并设置DefaultLimitNOFILE等参数,例如:
      DefaultLimitNOFILE=2097152 
      保存后执行:
      sudo systemctl daemon-reexec 
    2. 修改特定服务限制(如SSH):创建或编辑服务override文件(如/etc/systemd/system/sshd.service.d/override.conf),添加:
      [Service] LimitNOFILE=2097152 
      保存后重启服务:
      sudo systemctl daemon-reload sudo systemctl restart sshd 

二、未使用login shell

  • 原因:通过sudo su或非登录shell启动时,可能不加载limits.conf
  • 解决方法
    • 使用su -或直接SSH登录,确保加载PAM配置:
      su - username # 带“-”表示登录shell 

三、配置文件语法错误

  • 原因/etc/security/limits.conf/etc/security/limits.d/下文件格式错误(如未指定用户名、使用无效符号)。
  • 解决方法
    • 确保配置正确,例如:
      root soft nofile 204800 root hard nofile 204800 
    • 检查/etc/pam.d/login/etc/pam.d/sshd中是否包含session required pam_limits.so

四、硬限制限制

  • 原因:软限制不能超过硬限制,若设置的软限制超过硬限制则无效。
  • 解决方法
    • 确保硬限制足够大,或同时修改软限制和硬限制。

五、缓存或重启问题

  • 原因:修改后未重启生效。
  • 解决方法
    • 临时修改可立即生效,永久修改需重启系统或重新登录。

验证方法

  • 执行ulimit -nulimit -Hn查看当前限制是否生效。

参考来源:

0