|
注:本文涉及到的一些文件及目录适用于 RedHat 及 RedHat 的编译版如 CentOS 等系统,我的系统是 CentOS 5.4 。
/proc/sys 目录比较特殊,与 /proc 下的其他目录也有很大的不同。因为他不仅能提供大量的系统信息还可以允许你对正在运行的内核进行一些配置与改动。警告:
不要在一台用于生产的服务器上尝试用 /proc/sys下不同的文件对系统的进行调节。有时候,改变一个设置,可能会致使内核变得不稳定,甚至需要重启系统。如果一个设置会明显的打断当前登录系统上用户的工作,那么应该使用一个用于开发环境的系统来进行这些改动尝试。在尝试改变 /proc/sys下任何值之前,你应该清楚知道这些选项的用法以及知道这些选项所带来的结果。
要确定 /proc/sys/xxx 目录下的文件是否可以配置,可以使用 ls -l 来查看,如果文件可写,那么就说明可以通过此文件向系统配置参数;如果不可写,那么表明这些文件不能被用来向系统配置参数,而仅仅是列出一些系统信息,比如:[root@localhost /]# ls -l /proc/sys/fs/
总计 0
-rw-r--r-- 1 root root 0 12-25 17:46 aio-max-nr
-r--r--r-- 1 root root 0 12-25 17:46 aio-nr
drwxr-xr-x 2 root root 0 12-25 08:57 binfmt_misc
-r--r--r-- 1 root root 0 12-25 17:46 dentry-state
-rw-r--r-- 1 root root 0 12-25 17:46 dir-notify-enable
-rw-r--r-- 1 root root 0 12-25 17:46 file-max
-r--r--r-- 1 root root 0 12-25 17:46 file-nr
-r--r--r-- 1 root root 0 12-25 17:46 inode-nr
-r--r--r-- 1 root root 0 12-25 17:46 inode-state
... ... 像上面,aio-max-nr , dir-notify-enable,file-max 具有可写权限,那么就说明这由文件对内核进行配置。
要改变 /proc/sys 底下文件的值可以通过 echo一个新值到相应的文件中。比如,要使能系统的 SysRq (SysRq 键是和打印屏幕按键<PtrSc>为同一个按键,这个键和alt 键一起再和一个普通的按键组合,那么就形成一个特殊功能键,比如可以让系统快速重启)功能,那么可以(在 root 权限下):echo "1" > /proc/sys/kernel/sysrq 这样,就使能了 sysrq 的组合按键功能。
注意:默认情况下,sysrq 的值为 0 (但在新的内核里有可能会配置为 1),经过这样的设置后,sysrq功能在运行时有效,但是在重启后由系统通过调用 rc.sysinit (在 /etc/rc.d/rc.sysinit 中 <redhatlinux 环境>)文件,而 rc.sysrq 文件会调用 sysctl 命令,而 sysctl 命令又会把相应的配置文件/etc/sysctl.conf 中的配置信息传递给内核,这个传递过程正是通过对 /proc 下的文件进行操作来完成的。
在上面,当 1 写到 /proc/sys/kernel/sysrq 后,我们可以试验一下这些组合键的方便,比如要重启使用组合按键 alt + sysrq + b 即可。另外,更多关于 sysrq 的说明可参考内核源码树里的 Documentation/sysrq.txt 文档。
在 /proc/sys 下的少数一些文件需要一次 echo 进几个值,比如:echo "4 2 45" > /proc/sys/kernel/acct 这里,每个值用空格隔开。
注意:任何一个 /proc/sys 下的文件使用 echo 改变其值的,在系统启动时,这些值都将不复存在。但如果希望能够在系统启动时能保持希望的值,那么需要用到 sysctl 命令。
/proc/sys 目录里包含了几个不同的子目录,这些子目录里的文件可用来配置运行时的内核的不同方面的内容,下面分述。
/proc/sys/dev 目录
这个目录下还有一些子目录,这些子目录对应着特定的设备,而在这些子目录里的文件,可以提供这些设备的参数信息。一般的,都会看到 cdrom 和 raid 目录。当然根据各机器的不同硬件环境,还会看到起他的一些目录,比如我的:[root@localhost dev]# ls
cdrom hpet parport raid rtc scsi
如在 cdrom 目录下,会看到一个 info 文件,这个文件里包含了 CD-ROM 的重要参数信息:[root@localhost cdrom]# cat info
CD-ROM information, Id: cdrom.c 3.20 2003/12/17
drive name: hdc
drive speed: 24
drive # of slots: 1
Can close tray: 1
Can open tray: 1
Can lock tray: 1
Can change speed: 1
Can select disk: 0
Can read multisession: 1
Can read MCN: 1
Reports media changed: 1
Can play audio: 1
Can write CD-R: 1
Can write CD-RW: 1
Can read DVD: 1
Can write DVD-R: 0
Can write DVD-RAM: 0
Can read MRW: 1
Can write MRW: 1
Can write RAM: 1 这个文件可以快速的扫描并发现一个未知的 CD-ROM 的性能参数,至少在内核看来是这样的。如果一个系统中有多个可用的光驱,那么每一个都会有自己的一列信息。
在 /proc/sys/dev/cdrom 里还有一些其他的文件,像 autoclose 和 checkmedia 可以用来控制光驱,这里也是简单往文件里写 1 使能或写 0 禁止相应的特性。
如果在内核中把 RAID 的支持也编译进去,那么 /proc/sys/dev/raid 目录下至少会包含两个文件: speed_limit_min 和 speed_limit_max. 处理特定 I/O 密集型任务时(如重新同步磁盘),可配置这两个文件以抑制或加速 RAID 设备的速度。
/proc/sys/fs 目录
在 fs 目录下会看到以下文件:
1、dentry-state
此文件提供目录缓存的状态信息,使用 cat 命令查看该文件,会有:[root@localhost fs]# cat dentry-state
6594 3215 45 0 0 0 上面,第 1 个数字表示总的目录缓存入口的数目;
第 2 个数字表示未用的入口数目;
第 3 个数字表示在一个目录被释放和被回收之间的秒数时间;
第 4 个数字计算当前系统请求的页面数。
最后两个数字(第 5 和第 6 个)未用,为 0 。
2、file-max
系统分配的最大文件句柄数,允许对其修改。增大这个值可以解决由于可用文件句柄缺少的错误。[root@localhost fs]# cat file-max
35378
3、file-nr
这个文件显示三个数字:[root@localhost fs]# cat file-nr
4032 0 35378 依次表示,已分配的文件句柄数;已使用的文件句柄数;系统分配最大的文件句柄数。
4、overflowgid 和 overflowuid
分别定义了最大的 GID 和 UID 数,超出此数则溢出:[root@localhost fs]# cat overflowgid overflowuid
65534
65534 |
|