Linux内核参数设置sysctl命令详解




sysctl是一个允许您改变正在运行中的Linux系统的接口. 它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能. 用sysctl可以读取设置超过五百个系统变量. 基于这点, sysctl提供两个功能:读取和修改系统设置.

常用参数


-w 临时改变某个指定参数的值,如sysctl -w net.ipv4.ip_forward=1
-a 显示所有的系统参数
-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

以下是实例





​$ sysctl -a     #查看所有可读变量​


 


​$ sysctl net.ipv4.ip_forward    #查看某个变量​


​net.ipv4.ip_forward = 1​


 


​$ sysctl -n net.ipv4.ip_forward    #获取某个变量的值​


​1​


 


​$ sysctl -w kernel.yama.ptrace_scope=0   #临时修改某个变量的当前值,即虚拟文件系统/proc下的值,重启失效​


​kernel.yama.ptrace_scope = 0​


 


​$ echo 1 > /proc/sys/net/ipv4/ip_forward  #临时修改某个变量的当前值,效果同上​


 


​#使用sed命令永久修改某值​


​#把kernel.yama.ptrace_scope开头的行修改为后面的值,注意第2个/后面有个c表示change​


​$ sudo sed -i "/^kernel.yama.ptrace_scope/ckernel.yama.ptrace_scope = 0" /etc/sysctl.d/10-ptrace.conf​


​$ sysctl -p    #将sysctl.conf文件中的修改读取到系统中,即虚拟文件系统/proc下的值​



从如上的命令也可以看出, 所有的变量都可以在/proc/sys中找到, 例如/proc/sys/kernel/yama/ptrace_scope, 如果要把它写入/etc/sysctl.conf文件中, 需要把前面的/proc/sys去掉, 同时写成kernel.yama.ptrace_scope的形式.


技术链接