如何查詢單個值
# sysctl kernel.shmmax
kernel.shmmax = 68719476736
或者:
# sysctl -n kernel.shmmax
68719476736
示例中的值和文件/proc/sys/kernel/shmmax 有關聯:
# cat /proc/sys/kernel/shmmax
68719476736
查詢所有內核設置
要查詢所有的內核參數,可以允許下面的命令 sysctl -a
# sysctl -a | more
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 4000000
kernel.sched_latency_ns = 20000000
kernel.sched_wakeup_granularity_ns = 4000000
kernel.sched_tunable_scaling = 1
還可以使用正則表達式 如下:
# sysctl -a | grep ^kernel.s[h,e]m
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.shm_rmid_forced = 0
kernel.sem = 250 32000 100 128
臨時設置內核參數
可以使用命令 sysctl -w 如:
# sysctl -w kernel.sysrq=0
kernel.sysrq = 0
值的格式是多個或者有特殊字符時 用引號括起來 如:
# sysctl -w net.ipv4.ip_local_port_range="1025 65535"
或者直接將參數 寫入到 對應參數的 procfs 文件中 :如:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo "1025 65535" > /proc/sys/net/ipv4/ip_local_port_range
永久設置內核參數
用以上臨時方式修改的內核參數,在系統重啟時會丟失 。想要永久修改內核參數,要用到內核參數配置文件 /etc/sysctl.conf , 配置語法使用鍵值對,等號分隔 如: component.parameter=value ,要使配置的值生效,可以執行命令 sysctl -p
如:
# vi /etc/sysctl.conf
[component].[parameter]=[value]
# sysctl -n kernel.ctrl-alt-del
0
# echo "kernel.ctrl-alt-del=1" >> /etc/sysctl.conf
# sysctl -p
kernel.ctrl-alt-del = 1
在ubuntu centos RHEL 中永久設置內核參數
在這些系統設置與舊版本有所不同 ,可以創建一個文件在目錄:
/etc/sysctl.d/ 文件名以后綴conf 結尾即可 ,系統會在啟動時按照文件名順序加載改文件夾中配置文件。
# cat /etc/sysctl.d/01-custom.conf
net.ipv4.ip_forward=1
net.ipv4.ip_local_port_range="1025 65535"
要使新創建的配置文件立即生效而已使用命令 sysctl -p filename
# sysctl -p /etc/sysctl.d/01-custom.conf
翻譯how-to-query-and-modify-kernel-parameters-using-sysctl-immediately-and-persistently-in-centos-rhel
