文件打开数
查看当前文件打开数限制
查看系统级限制
# 查看当前系统限制
cat /proc/sys/fs/file-max
cat /proc/sys/fs/file-nr查看用户级限制
# 查看当前用户限制
ulimit -n # 查看软限制
ulimit -Hn # 查看硬限制
# 查看特定进程的限制
cat /proc/<PID>/limits | grep "Max open files"查看已使用的文件数
# 查看系统已使用的文件描述符数量
cat /proc/sys/fs/file-nr
# 输出三个数字:已分配文件句柄数 | 已使用文件句柄数 | 文件句柄最大值
# 查看所有进程打开的文件数
lsof | wc -l
# 查看特定进程打开的文件数
lsof -p <PID> | wc -l修改文件打开数
临时修改(重启失效)
# 修改当前会话的限制
ulimit -n 65536
# 修改系统级限制(立即生效)
echo 1048576 > /proc/sys/fs/file-max永久修改
- 修改系统配置文件
# 添加或修改以下参数
fs.file-max = 1048576
fs.nr_open = 1048576
# 使配置立即生效
sudo sysctl -p- 修改用户限制(针对特定用户或所有用户)
# 在文件末尾添加(针对所有用户)
* soft nofile 65536
* hard nofile 131072
# 或针对特定用户
username soft nofile 65536
username hard nofile 131072- 对于systemd服务(重要!CentOS 7/Rocky 9大部分服务使用systemd)
# 方法A:修改全局配置
sudo vi /etc/systemd/system.conf
# 取消注释并修改:
DefaultLimitNOFILE=65536
DefaultLimitNPROC=65536
# 方法B:针对特定服务
sudo vi /usr/lib/systemd/system/<service-name>.service
# 在[Service]部分添加:
LimitNOFILE=65536
LimitNPROC=65536
# 重新加载systemd配置
sudo systemctl daemon-reload
sudo systemctl restart <service-name>验证修改结果
# 1. 验证系统级限制
cat /proc/sys/fs/file-max
# 2. 验证用户级限制(重新登录后生效)
ulimit -n
ulimit -Hn
# 3. 验证特定进程的限制
cat /proc/self/limits | grep "Max open files"
# 4. 验证服务进程的限制
sudo systemctl show <service-name> | grep LimitNOFILE