echo -n "Max open files=20:20" > /proc/$pid/limits
...funguje v RHEL5.5 a RHEL6.7.
Všimněte si, že "-n" je povinné; koncový nový řádek vygeneruje stížnost na neplatné argumenty.
Další možností je použít příkaz prlimit (z balíčku util-linux). Například pokud chcete nastavit maximální počet otevřených souborů pro běžící proces na 4096:
prlimit -n4096 -p pid_of_process
Můžete použít gdb, proniknout do procesu, zavolat výše uvedená syscalls ke zvýšení limitu, který vás zajímá, pak pokračovat v práci a ukončit gdb. Několikrát jsem tímto způsobem upravoval věci za běhu.
Vaše aplikace by nefungovala, ale jen na chvíli zamrzla, když jste prováděli hovor. pokud budete rychlí (nebo to napíšete!), pravděpodobně to nebude patrné.
Jako správce systému :/etc/security/limits.conf
soubor řídí toto na většině instalací Linuxu; umožňuje nastavit limity na uživatele. Budete chtít řádek jako myuser - nofile 1000
.
V rámci procesu :Volání getrlimit a setrlimit řídí většinu limitů alokace zdrojů pro jednotlivé procesy. RLIMIT_NOFILE
řídí maximální počet deskriptorů souborů. K jeho volání budete potřebovat příslušná oprávnění.