工作过程中的"最大打开文件"

wak*_*ako 17 linux file process limit

是否可以增加工作过程的"最大打开文件"参数?我的意思是这个参数:

cat /proc/<pid>/limits | grep files
Run Code Online (Sandbox Code Playgroud)

谢谢你的建议

小智 22

作为系统管理员:该/etc/security/limits.conf文件在大多数Linux安装上控制它; 它允许您设置每用户限制.你会想要一条像这样的线myuser - nofile 1000.

在一个过程中:getrlimit和setrlimit调用控制大多数每个进程的资源分配限制.RLIMIT_NOFILE控制文件描述符的最大数量.您需要适当的权限才能调用它.

  • 有时不考虑`limits.conf`,你必须在`/etc/systemd/system.conf` 和`user.conf` 中设置`DefaultLimitNOFILE`。 (2认同)

rka*_*ach 18

另一种选择是使用prlimit命令(来自util-linux包).例如,如果要为进程设置最大打开文件数:

prlimit -n4096 -p pid_of_process


lor*_*nix 6

老线程,我知道.

你可以使用gdb,进入进程,调用前面提到的系统调用来提高你感兴趣的限制,然后继续工作并退出gdb.我已经用这种方式动态编辑了几次.

您的应用程序不会关闭,但只是在您执行呼叫时暂停.如果你很快(或你编写脚本!),它可能不会引人注意.

  • 在现代Linux发行版中,您可以使用`prlimit` (2认同)

Bri*_*new 5

此链接详细说明了如何更改此系统每个用户.

许多应用程序(如Oracle数据库或Apache Web服务器)需要此范围相当高.因此,您可以通过在内核变量/ proc/sys/fs/file-max中设置新值来增加打开文件的最大数量,如下所示(以root身份登录):

$ sysctl -w fs.file-max = 100000

您需要编辑/etc/sysctl.conf文件并放入以下行,以便重新启动后设置将保持原样


Sec*_*ech 5

是的,可以/proc/<pid>/limits 在运行时增加限制.只需找到pid并执行以下命令:

echo -n "Max open files=20:20" > /proc/$pid/limits
Run Code Online (Sandbox Code Playgroud)

  • 没有在Ubuntu 14.04.2 LTS上工作. (2认同)

小智 5

echo -n "Max open files=20:20" > /proc/$pid/limits
Run Code Online (Sandbox Code Playgroud)

...适用于RHEL5.5和RHEL6.7。

注意,“-n”是必需的;尾随换行符将生成有关无效参数的投诉。