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

2018-10-20 23:09:24 8540

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的形式.


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: