在 Debian(以及大多数 Linux 发行版)里,ulimit 本身只能查“当前 shell 及其子进程”的限制,不能直接查“某个已存在的进程”。
要查某个具体进程的 ulimit,需要用 /proc 或 prlimit。
下面按常见场景说明。
ulimit -a
常见参数:
ulimit -n # 文件描述符
ulimit -u # 用户进程数
ulimit -s # 栈大小
⚠️ 这只对当前终端会话有效。
prlimit(最简单,Debian 自带)prlimit -p <PID>
只看某一项,比如 open files:
prlimit -n -p <PID>
示例:
prlimit -p 1234
输出类似:
RESOURCE DESCRIPTION SOFT HARD
...
NOFILE max open files 1024 4096
/proc(最底层)cat /proc/<PID>/limits
示例:
cat /proc/1234/limits
输出示例:
Max open files 1024 4096 files
Max processes 12345 12345 processes
这是最权威的方式。
如果是 systemd 服务(如 nginx、mysql):
systemctl show nginx | grep Limit
示例:
systemctl show mysql | grep -i limit
常见字段:
LimitNOFILE=
LimitNPROC=
| 目的 | 命令 |
|---|---|
| 当前 shell | ulimit -a |
| 指定进程 | prlimit -p PID |
| 指定进程(底层) | cat /proc/PID/limits |
| systemd 服务 | systemctl show 服务名 |
如果你愿意,可以告诉我:
我可以直接给你对应命令。