温馨提示×

怎么查centos ulimit限制

小樊
39
2026-10-17 17:17:36
栏目: 智能运维

在 CentOS(以及一般的 Linux 系统)中,可以通过多种方式查看 ulimit 限制。下面按常见场景说明:


一、查看当前 shell / 当前用户的 ulimit

1. 查看所有限制

ulimit -a

示例输出:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited

2. 查看单项限制

ulimit -n   # 打开文件数
ulimit -u   # 最大用户进程数
ulimit -s   # 栈大小

二、查看某个进程的 ulimit(已运行进程)

方法 1:通过 /proc

cat /proc/<PID>/limits

例如:

cat /proc/1234/limits

可以看到:

  • Max open files
  • Max processes
  • Max address space 等

方法 2:使用 prlimit

prlimit --pid <PID>

三、查看系统级限制(内核参数)

1. 系统最大文件描述符

cat /proc/sys/fs/file-max

2. 当前已用文件描述符

cat /proc/sys/fs/file-nr

四、查看 PAM / 用户级配置(登录用户生效)

1. /etc/security/limits.conf

cat /etc/security/limits.conf

示例:

* soft nofile 65535
* hard nofile 65535

2. /etc/security/limits.d/

ls /etc/security/limits.d/
cat /etc/security/limits.d/*.conf

五、systemd 服务的 ulimit(CentOS 7+)

如果是 systemd 管理的服务,limits.conf 可能不生效。

查看服务限制

systemctl show <service> | grep Limit

例如:

systemctl show nginx | grep Limit

设置方式(示例)

[Service]
LimitNOFILE=65535
LimitNPROC=65535

六、常见注意点

  • ulimit 只影响 当前 shell 及其子进程
  • 修改 limits.conf 后需 重新登录
  • systemd 服务不受 limits.conf 控制
  • root 用户可超过 soft limit,但不能超过 hard limit

如果你是想排查某个具体问题(比如 Too many open files、fork 失败),可以告诉我具体报错,我可以帮你定位该看哪一项。

0 踩