Linux中的Sysctl命令
作为Linux系统管理员,有时我们可能需要修改默认内核的行为。
例如,我们可能需要启用魔术SysRq键或者增加内核将接受的连接数。
可以在构建内核时,系统引导时或者运行时设置内核参数。
本文介绍了如何在运行时使用'sysctl'命令查看和修改内核参数。
使用'sysctl'查看内核参数
要查看所有当前内核参数,请使用'-a'选项调用'sysctl'命令:
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.swappiness”和“ cat/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'文件。