分享最新优惠信息
购买主机更加划算

使用sysctl命令修改Linux内核变量的十个示例

一般情况下,可以配置Linux内核的多个参数或可调参数来控制其行为,无论是在引导时还是在系统运行时按需执行。sysctl是一种广泛使用的命令行实用程序,用于在运行时修改或配置内核参数,可以在/proc/sys/目录下找到列出的内核可调参数。

sysctl由procfs(proc文件系统)提供支持,procfs是Linux和其它类Unix 操作系统中的一个伪文件系统,它提供了内核数据结构的接口,并且提供有关进程的信息和其它系统信息。

本文简单整理10个有用的sysctl命令示例,你可以在管理正在运行的Linux系统时使用它们。请注意,需要root权限才能运行sysctl命令,否则,在调用它时使用sudo命令。

1、列出Linux中的所有内核参数

要列出所有当前可用的内核参数,请运行带有-a--all标志的 sysctl 命令,如图所示。

$ sudo sysctl -a
或者
$ sudo sysctl --all

变量以这种格式显示:

<tunable class>.<tunable> = <value>

例如:

kernel.ostype = Linux

在Linux中检查内核参数

2、列出所有内核变量名

要仅输出不带值的变量名称,请使用-N所示选项:

$ sudo sysctl -a -N

在Linux中检查内核变量名

3、在Linux中查找特定的内核变量

要查找特定变量,可以通过grep命令过滤sysctl的输出,例如,要输出任何与内存管理相关的变量,可以运行以下命令:

$ sudo sysctl -a | grep memory
或者
$ sudo sysctl --all | grep memory

在Linux中检查内核内存变量

4、列出所有内核变量(包括弃用的

sysctl命令还使用--deprecated标志显示已弃用的变量以及所有可用变量的列表:

$ sudo sysctl -a --deprecated
或者
$ sudo sysctl -a --deprecated | grep memory

5、列出特定的内核变量值

要读取sysctl变量及其值,请将变量名称指定为sysctl命令参数,如下所示。此示例显示如何读取kernel.ostype变量值。

$ sudo sysctl kernel.ostype

kernel.ostype = Linux

6、临时写入内核变量

要临时写入变量,只需按此格式指定变量即可。

<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

临时设置内核变量

7、永久写入内核变量

sysctl还可以在配置文件中永久写入变量。为此,可以使用该-w选项,并指定变量及其值将附加到的配置文件,在这种情况下,它是/etc/sysctl.conf,默认的sysctl配置文件:

$ sudo sysctl -w net.core.netdev_max_backlog=1200 >> /etc/sysctl.conf

要在自定义中永久写入文件,请按如下方式指定文件的位置。有时候,即使使用sudo命令调用sysctl命令,也可能无法在特定位置创建文件。

在这种情况下,切换到root帐户(如果你有权限)并再次运行命令,如图所示。

$ 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
user.max_net_namespaces = 63067
vm.overcommit_memory = 0

最后保存文件并关闭它。要从刚刚创建的自定义文件加载设置,请使用-p--load标志。

$ sudo sysctl -p /etc/sysctl.d/10-test-settings.conf
或者
$ sudo sysctl --load= /etc/sysctl.d/10-test-settings.conf

8、在Linux中重新加载sysctl.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

9、从自定义配置文件重新加载设置

此外,还可以从自定义sysctl配置文件重新加载变量设置,命令如下:

$ sudo sysctl -p/etc/sysctl.d/10-test-settings.conf
或者
$ sudo sysctl --load= /etc/sysctl.d/10-test-settings.conf

10、重新加载匹配模式的设置

要仅应用与特定模式匹配的设置,请按以下方式使用-r--pattern。请注意,该模式使用扩展的正则表达式语法,以下是一些示例:

$ sudo sysctl --system --pattern '^net.ipv6'
$ sudo sysctl --system -r memory

重新加载匹配模式的设置

总结

在本文中,小编简单介绍了10个可用于管理正在运行的Linux系统的sysctl命令示例,有需要设置Linux内核变量的朋友可以参考参考。

众所周知,sysctl命令是一个用于查看和更改内核参数的工具,它可以显示和修改系统参数,这些参数具有影响系统性能和行为的能力,调优系统性能就会用到这个命令,可以使用sysctl查询和设置内核参数,以及更新系统参数。

未经允许不得转载:惠主机 » 使用sysctl命令修改Linux内核变量的十个示例