linux中调整最大文件锁数量使用ulimit -x参数,对应rlimit_locks资源,控制单个进程可持有的flock、fcntl等文件锁总数,需通过ulimit命令临时设置或limits.conf永久配置。

Linux 中调整最大文件锁数量(即进程可持有的文件锁总数)用的是 ulimit -x 参数,对应资源类型是 RLIMIT_LOCKS。这个限制控制单个进程能同时设置的文件锁(flock、fcntl 锁等)最大数量,不是文件描述符数,也不影响 inotify 或 socket 连接。
查看当前文件锁限制
运行以下命令查看当前软限制:
ulimit -x
若需同时查看硬限制,加 -H 选项:
ulimit -Hx
临时修改(当前会话生效)
只需一条命令即可设置(需有权限,普通用户不能超过硬限制):
- 设为 1024: ulimit -x 1024
- 同时设软硬限制: ulimit -Hx 2048 && ulimit -Sx 2048
- 设为不限制(仅 root 可设):ulimit -x unlimited
⚠️ 注意:该设置仅对当前 shell 及其子进程有效,退出终端即失效。
永久修改(对指定用户生效)
编辑 /etc/security/limits.conf,添加类似行:
- 对所有用户(不含 root):
* soft locks 4096
* hard locks 8192 - 对特定用户(如 www-data):
www-data soft locks 65536
www-data hard locks 65536
确保 PAM limits 模块已启用(检查 /etc/pam.d/common-session 是否含 session required pam_limits.so),修改后需重新登录或重启服务才生效。
验证是否生效
重新登录后执行:
ulimit -x —— 查看软限制
ulimit -Hx —— 查看硬限制
也可在程序中调用 getrlimit(RLIMIT_LOCKS, &rlim) 获取运行时值。
不复杂但容易忽略











