直接使用sysctl可以修改内核在运行时的参数,这些参数位于/proc/sys/目录下,修改内核参数时,可以不用写/proc/sys,只需要写上在该目录下的文件的名称或子目录的名称,如修改操作系统的主机名,该参数位于/proc/sys/kernel/目录下的hostname文件,如下所示:

[root@zhanghe ~]# ll /proc/sys/kernel/hostname 
-rw-r--r-- 1 root root 0 Aug  3 21:17 /proc/sys/kernel/hostname
[root@zhanghe ~]# cat /proc/sys/kernel/hostname
zhanghe
[root@zhanghe ~]#

如果要修改主机名,可以采用如下方式:

[root@zhanghe ~]# sysctl -w kernel.hostname=frame
kernel.hostname = frame
[root@zhanghe ~]# hostname 
frame
[root@zhanghe ~]# cat /proc/sys/kernel/hostname 
frame
[root@zhanghe ~]#

sysctl -p则表示载入sysctl的配置文件,位于/etc/sysctl.conf,不需要重启系统即可生效。

通过使用sysctl -w修改内核参数或者是修改/proc/sys/目录下的文件,在系统重启后,所有的配置都会丢失,因此要修改内核配置文件sysctl.conf,以便系统启动时就生效。

示例:

net.ipv4.ip_forward = 0
说明:
上述文件是修改内核参数的,也不需要写/proc/sys,所有的/都用点(.)来代替。说明该参数位于/proc/sys/net/ipv4/ip_forward里面。
将其中的0改为1则表示启用数据包的转发功能。
然后使用sysctl -p使配置立即生效。