“最大打开文件”为工作进程

是否有可能为工作过程增加“最大打开文件”参数? 我的意思是这个参数:

cat /proc/<pid>/limits | grep files 

感谢您的build议

作为系统管理员/etc/security/limits.conf文件在大多数Linux安装中控制此功能; 它允许您设置每个用户的限制。 你会想要一个像myuser - nofile 1000

在一个过程中 : getrlimit和setrlimit调用控制大多数进程资源分配限制。 RLIMIT_NOFILE控制RLIMIT_NOFILE的最大数量。 您将需要适当的权限来调用它。

另一个选择是使用prlimit命令(来自util-linux软件包)。 例如,如果您想为进程设置打开文件的最大数量:

prlimit -n4096 -p pid_of_process

老线程,我知道。

你可以使用gdb,进入进程,调用上述的系统调用来提高你感兴趣的限制,然后继续工作并退出gdb。 我用这种方式几次编辑了一些东西。

您的应用程序不会停机,而是在执行呼叫时暂时冻结。 如果你快(或你的脚本!),它可能不会引人注目。

此链接详细信息如何更改此系统范围每个用户

是的,可以在运行时增加/proc/<pid>/limits 。 只要找到PID并执行下面的命令:

 echo -n "Max open files=20:20" > /proc/$pid/limits 
 echo -n "Max open files=20:20" > /proc/$pid/limits 

…在RHEL5.5和RHEL6.7中工作。

请注意,“-n”是强制性的; 一个尾随的换行符会产生一个关于无效参数的投诉。

以下命令给出每个进程允许的最大打开文件数量(默认为软限制和硬限制):

 ulimit -Sa ulimit -Ha 

您可以使用程序或命令来更改这些限制。 看看ulimit(man ulimit)。