我有一个长时间运行的进程,最终将达到最大打开文件数限制。我知道在进程失败后如何更改,但是有没有办法从命令行更改正在运行的进程的打开文件数限制?
答案1
据记载这里,该prlimit
命令在 util-linux 2.21 中引入,允许您读取和更改正在运行的进程的限制。
这是可写的 的后续/proc/<pid>/limits
,它未集成到主线内核中。此解决方案应该有效。
如果你还没有prlimit(1)
,你可以在prlimit(2)
手册页。
答案2
在 CentOS/RHEL 上的较新内核 (2.6.32+) 上,您可以在运行时使用 /proc/<pid>/limits 更改此设置:
cd /proc/7671/
[root@host 7671]# cat limits | grep nice
Max nice priority 0 0
[root@host 7671]# echo -n "Max nice priority=5:6" > limits
[root@host 7671]# cat limits | grep nice
Max nice priority 5 6
答案3
在较新版本的 util-linux-ng 中,您可以使用 prlimit 命令,有关更多信息,请阅读此链接https://superuser.com/questions/404239/setting-ulimit-on-a-running-process
答案4
如果经过编程(或者您设法破解了它),该进程可以更改其自身的软限制,但除非它具有 CAP_SYS_RESOURCE 功能,否则它无法提高其硬限制。您可以在 中检查运行时的限制/proc/$pid/limits
。