曲径通幽论坛

标题: sysctl -- 在运行时配置内核参数 [打印本页]

作者: beyes    时间: 2011-5-25 23:40
标题: sysctl -- 在运行时配置内核参数
sysctl 命令在系统运行时可以进行内核参数的配置--通过读出/写入的方式进行。这些可配置的参数通常都在 /proc/sys 下:
[beyes@localhost ~]$ ll /proc/sys
total 0
dr-xr-xr-x 0 root root 0 May 25 04:49 debug
dr-xr-xr-x 0 root root 0 May 25 04:49 dev
dr-xr-xr-x 0 root root 0 May 24 20:36 fs
dr-xr-xr-x 0 root root 0 May 24 23:01 kernel
dr-xr-xr-x 0 root root 0 May 25 01:38 net
dr-xr-xr-x 0 root root 0 May 25 04:49 sunrpc
dr-xr-xr-x 0 root root 0 May 25 04:49 vm
上面的各个目录下都有相关的配置文件项。

我们可以用 -a 参数来读取所有可配置的变量:
[root@localhost beyes]# sysctl -a |more
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 2250000
kernel.sched_latency_ns = 18000000
kernel.sched_wakeup_granularity_ns = 3000000
kernel.sched_tunable_scaling = 1
... ...
在 Fedora15 系统上,默认安装情况下,通过对 -a 参数输出统计,知道可配置变量高达 750 项:
[root@localhost beyes]# sysctl -a |wc -l
750

读取一个变量的方法很简单,比如读取 kernel.ostype 这个变量:
[root@localhost beyes]# sysctl kernel.ostype
kernel.ostype = Linux
从输出知道,当前 OS 为 Linux 。

-n 参数可以在输出时忽略掉变量名称,如:
[root@localhost beyes]# sysctl -n kernel.ostype
Linux

如果想更改一个变量值,可以使用 -w 参数:
[root@localhost beyes]# sysctl -w kernel.domainname="localhost"
kernel.domainname = localhost
[root@localhost beyes]# sysctl kernel.domainname
kernel.domainname = localhost
-p 参数后可以接一个配置文件,这样 sysctl 就会从中读取配置项来配置内核参数,如果 -p 后不接文件,那默认就使用 /etc/sysctl.conf 这个文件来配置。

使用 sysctl 命令进行配置,在系统重启后这些配置失效,如果希望在系统重启后仍然生效,那么要将配置写到 /etc/sysctl.conf 文件中。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2