Debian ulimit设置步骤
临时调整ulimit值适用于快速测试或临时需求,关闭终端后设置失效。
ulimit -a(显示软/硬限制,如文件描述符数量nofile、进程数nproc等)。ulimit -S -n <值>(例如ulimit -S -n 1024)。ulimit -H -n <值>(例如ulimit -H -n 2048)。ulimit -u <值>(例如ulimit -u 4096)。ulimit -v <值>(如ulimit -v 512000)。ulimit -t <值>(如ulimit -t 3600)。ulimit -s <值>(如ulimit -s 8192)。永久设置需修改配置文件,确保重启或重新登录后生效。
修改/etc/security/limits.conf:
用文本编辑器(如sudo nano /etc/security/limits.conf)打开文件,在末尾添加规则:
* soft nofile 65535 # 所有用户文件描述符软限制为65535
* hard nofile 65535 # 所有用户文件描述符硬限制为65535
* soft nproc 4096 # 所有用户进程数软限制为4096
* hard nproc 8192 # 所有用户进程数硬限制为8192
可替换*为特定用户名(如john)以针对单个用户设置。
启用PAM模块:
编辑/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive文件,在末尾添加:
session required pam_limits.so
确保登录时会话加载pam_limits.so模块,使limits.conf生效。
.bashrc或.profile):nano ~/.bashrc),在末尾添加:ulimit -n 1024 # 用户默认文件描述符软限制
ulimit -Hn 2048 # 用户默认文件描述符硬限制
保存后执行source ~/.bashrc使配置立即生效,仅对当前用户有效。若需为systemd管理的服务(如Apache、Nginx)单独设置ulimit,需修改服务单元文件。
/etc/systemd/system.conf和/etc/systemd/user.conf,设置默认限制:DefaultLimitNOFILE=65535:65535 # 默认文件描述符软/硬限制
DefaultLimitNPROC=4096:8192 # 默认进程数软/硬限制
/etc/systemd/system/nginx.service),在[Service]段添加:[Service]
ExecStartPre=/bin/ulimit -S -n 65535 # 启动前设置软限制
ExecStartPre=/bin/ulimit -H -n 65535 # 启动前设置硬限制
ExecStart=/usr/sbin/nginx # 原服务启动命令
LimitNOFILE=65535:65535 # 直接指定限制(推荐)
保存后执行以下命令使配置生效:sudo systemctl daemon-reload # 重新加载systemd配置
sudo systemctl restart nginx # 重启服务
ulimit -n(文件描述符)、ulimit -u(进程数)。cat /proc/sys/fs/file-max(系统最大文件描述符数)。systemctl show <服务名> | grep LimitNOFILE(如systemctl show nginx | grep LimitNOFILE)。注意事项:
nofile(文件描述符)限制时,需同步修改/etc/sysctl.conf中的fs.file-max(系统级最大文件描述符数),并通过sudo sysctl -p应用,避免系统级限制覆盖用户级设置。--ulimit参数传递设置,无法直接修改宿主机ulimit影响容器。