echo -n "Max open files=20:20" > /proc/$pid/limits
...RHEL5.5 および RHEL6.7 で動作します。
「-n」は必須であることに注意してください。末尾の改行は、無効な引数に関する苦情を生成します。
もう 1 つのオプションは、prlimit コマンド (util-linux パッケージから) を使用することです。たとえば、実行中のプロセスで開くファイルの最大数を 4096 に設定する場合:
<ブロック引用>prlimit -n4096 -p pid_of_process
gdb を使用し、プロセスに割り込んで、前述の syscalls を呼び出して、関心のある制限を引き上げてから、ジョブを続行して gdb を終了することができます。私はこの方法で何度かその場で編集しました.
アプリがダウンすることはありませんが、通話を実行している間だけフリーズします。素早い (またはスクリプトを作成する) 場合は、おそらく目立たないでしょう。
システム管理者として :/etc/security/limits.conf
ファイルは、ほとんどの Linux インストールでこれを制御します。ユーザーごとの制限を設定できます。 myuser - nofile 1000
のような行が必要になります .
プロセス内 :getrlimit および setrlimit 呼び出しは、ほとんどのプロセスごとのリソース割り当て制限を制御します。 RLIMIT_NOFILE
ファイル記述子の最大数を制御します。呼び出すには適切な権限が必要です。