この値がどこに設定されていて、デフォルトは何であるか疑問に思います。私は現在18446744073692774399です。目に見える場所には設置していません。
$ cat /proc/sys/kernel/shmmax
18446744073692774399
$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399
答え1
__init
機能ipc_ns_init
shmmax
呼び出して初期値を設定するshm_init_ns
、マクロ値に設定しますSHMMAX
。
定義SHMMAX
は次のとおりです。<uapi/linux/shm.h>
:
#define SHMMAX (ULONG_MAX - (1UL << 24)) /* max shared seg size (bytes) */
64ビットコンピュータでは、この定義は見つかった値と同じです18446744073692774399
。
答え2
/proc/sys/kernel/shmmaxをすぐにエコーできます!
# echo 20446744073692774399 > /proc/sys/kernel/shmmax
しかし、ほとんどの人は次の行を使用して/etc/sysctl.confを編集します。
kernel.shmmax=your_new_value_here
sysctl(8) のマニュアルページを参照してください。