Linux内核参数设置sysctl命令详解
原文:https://www.zhukun.net/archives/8064
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的形式.