Linux限制用户最大进程数和打开文件数需分临时与永久两种方式:临时用ulimit命令仅作用于当前会话;永久需配置/etc/security/limits.conf并确保pam_limits.so启用;还需同步调大fs.file-max和pid_max等内核级上限。

Linux 限制用户最大进程数和打开文件数,主要通过 ulimit 机制实现,分临时生效和永久生效两种方式,分别作用于进程级、用户级和系统级。关键不是“能不能设”,而是“在哪设、谁生效、会不会被覆盖”。
一、临时限制:只对当前 Shell 及其子进程有效
适合测试、调试或应急调整,退出终端即失效。
-
限制当前用户最多打开 65535 个文件:
ulimit -n 65535 -
限制当前用户最多创建 4096 个进程(含线程):
ulimit -u 4096 -
同时设置软硬限制(推荐):
ulimit -Hn 65535 && ulimit -Sn 65535;ulimit -Hu 4096 && ulimit -Su 4096 - 注意:
ulimit是 shell 内建命令,不能用sudo ulimit提权修改 root 以外用户的限制;普通用户只能调低自己的软限制,不能突破硬限制
二、永久限制:写入 PAM 配置,登录后生效
修改 /etc/security/limits.conf 或 /etc/security/limits.d/*.conf 文件,需重新登录才生效。
- 格式为:
domain type item value,例如: -
* soft nofile 65535—— 所有用户软限制为 65535 个文件描述符 -
* hard nofile 65535—— 所有用户硬限制也为 65535 -
www-data soft nproc 8192—— 仅 www-data 用户最多运行 8192 个进程 -
@developers hard nproc 16384—— developers 组硬限制为 16384 进程 - 确保系统已加载
pam_limits.so:检查/etc/pam.d/common-session中存在session required pam_limits.so
三、系统级兜底:防止用户级配置越界
用户级限制不能超过内核允许的全局上限,否则会静默截断。
-
全系统最大文件数(所有进程总和):
查看:cat /proc/sys/fs/file-max
临时改:sysctl -w fs.file-max=3865121212
永久改:在/etc/sysctl.conf加fs.file-max = 3865121212,再运行sysctl -p -
全系统最大 PID 数(影响进程总数):
查看:cat /proc/sys/kernel/pid_max
修改(需 root):echo 131072 > /proc/sys/kernel/pid_max或写入/etc/sysctl.conf
四、验证是否生效
不要只信配置文件,要查实际运行时的值。
- 查看当前会话限制:
ulimit -a - 单独查文件数:
ulimit -n(软限制)、ulimit -Hn(硬限制) - 查进程数:
ulimit -u和ulimit -Hu - 查某进程实际使用量:
ls /proc/<PID>/fd | wc -l(打开文件数),ps -u <username> --no-headers | wc -l(用户进程数)


















