我爱电脑技术论坛's Archiver

star2008 发表于 2008-6-19 14:14

Linux如何在系统运行过程中修改内核参数

RedHat向管理员提供了非常好的方法,使我们可以在系统运行时更改内核参数,而不需要重新引导系统。这是通过/proc虚拟文件系统实现的。/proc/sys目录下存放着大多数的内核参数,并且设计成可以在系统运行的同时进行更改。下面我们以打开内核的 ip转发功能为例说明在系统运行时修改内核参数的两种方法。IP转发是指允许系统对来源和目的地都不是本机的数据包通过网络,RedHat默认屏蔽此功能,在 需要用本机作为路由器、NAT等情况下需要开启此功能。 VJ i2}%m"C%k
`'w)`:@J'_b
Z"\A6\\XN
方法一:修改/proc下内核参数文件内容
km#t{L rf Q)dv _%WYBNT]
直接修改内核参数ip_forward对应在/proc下的文件/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward文件内容:
/`BX/S zn"A:e_.X$oC
.L)X!oe1V4yL },Mr # cat /proc/sys/net/ipv4/ip_forward
'zMI)c4r
|csL.D%e
c`'zZ:z0z{_ J)n:_ 该文件默认值0是禁止ip转发,修改为1即开启ip转发功能。修改命令如下:
6lui^w5N
uPKq-W'[ # echo 1 >/proc/sys/net/ipv4/ip_forward Tl q9tW.r/C9P
ix3Gx2Xlf+e
BjsH%J$? UV'W K*c8z,M
修改过后就马上生效,即内核已经打开ip转发功能。但如果系统重启后则又恢复为默认值0,如果想永久打开需要通过修改/etc/sysctl.conf文件的内容来实现。
T\r` JA{ MG"t
Y2^B*D#xU,_7W.[
$dJM\n fg 方法二.修改/etc/sysctl.conf文件 @|[s?v
9to u.ZYe_ k
j8m%R,B4^4pA"Lm!S
默认sysctl.conf文件中有一个变量是 I }R"J{Hw n
*nl(StxBr
net.ipv4.ip_forward = 0 7rTEVH(KpW

Goh+?}6Nw
v+^KW.C[ VLk 将后面值改为1,然后保存文件。因为每次系统启动时初始化脚本/etc/rc.d/rc.sysinit会读取/etc/sysctl.conf文件的内容,所以修改后每次系统启动时都会开启ip转发功能。但只是修改sysctl文件不会马上生效,如果想使修改马上生效可以执行下面的命令: #H;WA*El BZ;P m
`pAYgP&g s,IO

D.E`)q uS # sysctl –p 3yZ;n,kC/{%I

:Sa3}\y ~
W s0Jw%Ie.u_t 在修改其他内核参数时可以向/etc/sysctl.conf文件中添加相应变量即可,下面介绍/proc/sys下内核文件与配置文件 sysctl.conf中变量的对应关系,由于可以修改的内核参数都在/proc/sys目录下,所以sysctl.conf的变量名省略了目录的前面部 分(/proc/sys)。

star2008 发表于 2008-6-19 14:14

将/proc/sys中的文件转换成sysctl中的变量依据下面两个简单的规则:
#CU g6wJ S!Yr@eQl
R\ ve7}.`d
1.去掉前面部分/proc/sys H$Zjy*Y\h Z+A Z*JV

*v&wGB:wG#oK 2.将文件名中的斜杠变为点 RQ3Zj5_a s2I

Ofdzb ZOC y#qQ SA"noF'O
这两条规则可以将/proc/sys中的任一文件名转换成sysctl中的变量名。 6z8D ?$d#m MY-|l

xIPz+h9H2J|6H Nag}!JKH
例如:
2j7oq?Wg
7~w3D z_g.q /proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward
%OA(M9Q U3`Jd s `(w6o:DMjx
/proc/sys/kernel/hostname =》 kernel.hostname 6n0U.W5[3v
p X#`S9S:i!xW2k3}]

8[!|?m&Y 可以使用下面命令查询所有可修改的变量名
w#A.Y;_aR9\Q@
y1h+O I3n;H # sysctl –a
kI'k'{8} {V
K {*@as1S&fn
J4Lk|4?s)KN 下面例举几个简单的内核参数: xo$R*q {%^

NI.F @k'Jg[9t(] 1./proc/sys/kernel/shmmax
s]rHKCU ? My%jh@$r
该文件指定内核所允许的最大共享内存段的大小。
3f a S5G#]DU
%p ]N G0z5H~{6@p 2./proc/sys/kernel/threads-max
NYQq)?*?!} ;Md(P`Mz3i
该文件指定内核所能使用的线程的最大数目。 U|3FY[O O
IM^*r:N4N
3./proc/sys/kernel/hostname o+}/@v.E7^,V"a

D4E9Xy"GLJ 该文件允许您配置网络主机名。 h$Y"?6u ]H N

n|&vcVaD,S 4./proc/sys/kernel/domainname
,}"` k$n"v&t8a
6a/\rgD:D'Kt\.W 该文件允许您配置网络域名。

页: [1]
   

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.