Linux中的Sysctl命令

作为Linux系统管理员,有时您可能需要修改默认内核的行为。 例如,您可能需要启用魔术SysRq键或增加内核将接受的连接数。 可以在构建内核时,系统引导时或运行时设置内核参数。

本文介绍了如何使用 sysctl 命令以在运行时查看和修改内核参数。

使用 sysctl 查看内核参数

要查看所有当前内核参数,请调用 sysctl 用命令 -a 选项:

sysctl -a

这将输出一个很大的列表,看起来类似于以下内容,其中每一行都包含参数名称及其值:

abi.vsyscall32 = 1
debug.exception-trace = 1
debug.kprobes-optimization = 1
...

所有用户都可以查看当前的内核参数。 只有root用户可以修改其值。

您可以通过将单个参数的名称作为参数传递给它来检查单个参数的值 sysctl。 例如,要检查当前的可交换性值,请输入:

sysctl vm.swappiness
vm.swappiness = 60

Swappiness是Linux内核的一个属性,它定义系统使用交换空间的频率。

sysctl 命令从中读取信息 /proc/sys 目录。 /proc/sys 是一个虚拟目录,其中包含可用于查看和设置当前内核参数的文件对象。

您还可以通过显示适当文件的内容来查看参数值。 唯一的区别是文件的表示方式。 例如,两者 sysctl vm.swappinesscat /proc/sys/vm/swappiness 将给出相同的输出。 使用时 sysctl 目录斜杠由点代替,并且 proc.sys 假设是一部分。

使用 sysctl 修改内核参数

要在运行时设置内核参数,请运行 sysctl 命令,后跟以下格式的参数名称和值:

sysctl -w parameter=value

如果值包含空格或特殊字符,请将该值括在双引号中。 您还可以传递多个 parameter=value 对在同一命令中。

在生产系统上更改内核设置时,请格外小心,因为这可能会使内核不稳定,并且您需要重新引导系统。

例如,要启用IPv4数据包转发,可以运行:

sysctl -w net.ipv4.ip_forward=1

更改将立即生效,但不是持久的。 系统重新引导后,将加载默认值。

要永久设置参数,您需要将设置写入 /etc/sysctl.conf 或其他配置文件 /etc/sysctl.d 目录:

sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.conf

更改参数的另一种方法是使用 echo 命令将设置写入文件中的 /proc/sys 目录。 例如,您可以使用以下命令来代替运行上面的命令:

echo 1 > /proc/sys/net/ipv4/ip_forward

-p 选项允许您从配置文件中加载设置:

sysctl -p /etc/sysctl.d/file_name.conf

如果没有提供文件, sysctl/etc/sysctl.conf 文件。

结论#

sysctl 命令允许您查看和更改Linux内核参数。

如有任何疑问,请随时发表评论。

sysctl内核终端

Sidebar