可以配置Linux的多个参数或可调参数来控制其行为,sysctl是一个广泛使用的命令,可以用于运行时修改或配置内核参数。在/proc/sys/目录下找到列出的内核可调参数。由procfs提供支持,proc文件系统是Linux和其他类Unix操作系统中的伪文件系统,提供内核数据结构接口,提供有关进程和其他系统信息的信息。华纳云分享sysctl使用方法如下!
sysctl使用需要root权限,飞则需要使用sudo 命令。Linux中列出全部内核参数:
$ sudo sysctl -a
或者
$ sudo sysctl --all
变量显示的格式为:
<tunable class>.<tunable> = <value>
列出全部内核变量名称,要仅打印变量名称而不打印其值,用-N:
$ sudo sysctl -a -N
在Linux中查找特定变量,用grep命令过滤sysctl输出,如过滤和内存管理有关系的任何变量:
$ sudo sysctl -a | grep memory
或
$ sudo sysctl --all | grep memory
列出全部内核变量,含已弃用的:
$ sudo sysctl -a --deprecated
或
$ sudo sysctl -a --deprecated | grep memory
要读取sysctl变量及其值,请将变量名称指定为sysctl命令的参数,如下所示。此示例显示如何读取kernel.ostype变量:
$ sudo sysctl kernel.ostype kernel.ostype = Linux
临时写入内核变量,只需要以此格式来指定变量:
<tunable class>.<tunable>=<value>
以下示例显示了如何增加接收队列的最大大小,该队列存储从网络接收的NIC(网络接口卡net.core.netdev_max_backlog)环形缓冲区中挑选的帧。可以使用如下所示的变量修改队列大小。
$ sudo sysctl net.core.netdev_max_backlog
$ sudo sysctl net.core.netdev_max_backlog=1200
$ sudo sysctl net.core.netdev_max_backlog
永久写入内核变量,用选项-w,并指定将附加变量及其值的配置文件,在本例中,它是/etc/sysctl.conf,即默认的 sysctl 配置文件:
$ sudo sysctl -w net.core.netdev_max_backlog=1200 >> /etc/sysctl.conf
将文件永久写入自定义位置,请按如下方式指定文件的位置。有时,即使使用sudo 命令调用sysctl命令,也可能无法在特定位置创建文件:
$ sudo sysctl -w net.core.netdev_max_backlog=1200 >> /etc/sysctl.d/10-test-settings.conf
$ sudo su
# sysctl -w net.core.netdev_max_backlog=1200 >> /etc/sysctl.d/10-test-settings.conf
或者还可以在/etc/sysctl.d/目录中创建新的配置文件,如下所示:
$ sudo vim /etc/sysctl.d/10-test-settings.conf
然后添加内核参数,每行一个:
net.core.netdev_max_backlog = 1200
用户.max_net_namespaces = 63067
vm.overcommit_memory = 0
再保存文件并关闭,从刚刚创建自定义文件中加载设置:
$ sudo sysctl -p /etc/sysctl.d/10-test-settings.conf
或
$ sudo sysctl --load= /etc/sysctl.d/10-test-settings.conf
要从所有系统配置文件重新加载设置而不重新启动,请发出以下命令。
$ sudo sysctl --system
上述命令将按以下顺序从这些目录读取所有系统配置文件:
/run/sysctl.d/*.conf
/etc/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl .d/*.conf
/etc/sysctl.conf
从自定义sysctl配置文件重新加载变量设置:
$ sudo sysctl -p/etc/sysctl.d/10-test-settings.conf
或
$ sudo sysctl --load= /etc/sysctl.d/10-test-settings.conf
重新加载匹配模式的设置,仅应用与特定模式匹配的设置,请使用-r或,--pattern如下所示。请注意,该模式使用扩展的正则表达式语法,以下是一些示例:
$ sudo sysctl --system --pattern '^net.ipv6'
$ sudo sysctl --system -r memory