Linux中永久保存/proc/sys下的配置
通过 sysctl 命令永久保存/proc/sys 下的配置
因为系统重启后所有更改过的内核参数自动消失,也就是只能暂时修改内核参数。
因此要使用sysctl 命令来变更内核参数的设定才能将这些设定变成静态的,也就是变成永久的设置。使用sysctl命令所变更的参数会保存到/etc/sysctl.conf系统设置文件中。可以使用more命令列出/etc/sysctl.conf文件中的全部内容:
root@promote:~# more /etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
……
在系统启动之后,init 程序进行系统初始化时会自动执行rc.sysinit 程序,而 rc.sysinit 程序会自动读取/etc/sysctl.conf系统设置文件并执行这个文件中的系统配置。可以使用 ls 命令列出/proc/sys/目录中的全部内容:
root@promote:~# ls -l /proc/sys
总用量 0
dr-xr-xr-x 1 root root 0 6月 13 14:39 debug
dr-xr-xr-x 1 root root 0 6月 13 14:31 dev
……
之后可以继续使用ls命令列出/proc/sys目录下的子目录的内容。
使用 sysctl 命令可以进行系统配置和维护,也可以监督系统配置的变化,经常使用 sysctl 命令完成的工作有:
列出所有当前的系统设置:sysctl -a 。
从/etc/sysctl.conf文件中重新载入系统设置:sysctl -p 。
动态设置一个在/proc 目录中文件的值:sysctl -w kernel.shmmax=2147483648。
使用以sysctl开始的组合命令分页列出所有当前的系统设置,注意最后要使用more,否则显示的内容很难阅读:
root@promote:~# sysctl -a | more
debug.exception-trace = 1
debug.kprobes-optimization = 1
……
使用带有-p选项的 sysctl命令从/etc/sysctl.conf文件中重新载入系统设置:
root@promote:~# sysctl -p
使用带有 -w选项的 sysctl 命令将 2147483648 写入/proc/sys/kernel/shmmax 虚拟文件中,可以使用cat命令列出 /proc/sys/kernel/shmmax 文件中的内容以验证该命令是否正确:
root@promote:~# sysctl -w kernel.shmmax=2147483648
kernel.shmmax=2147483648
上例的sysctl -w命令在安装 Oracle 数据库管理系统时可能要用到,它是将参数shmmax 设置为2GB。