sysctl.conf 未在启动时运行

sysctl.conf 未在启动时运行

在启动过程中什么时候应该读取 sysctl.conf,为什么它可能没有运行?我有以下设置在重新启动时未应用:

net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-filter-pppoe-tagged = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0

fs.nfs.nlm_udpport = 32768
fs.nfs.nlm_tcpport = 32768

第一部分是 KVM 桥接所需的,第二部分是在已知端口上运行 NFS 锁管理器。但是,启动后,这些值尚未生效。如果我运行sysctl -p,它们就会生效。

这不会是一个大问题,只是我不知道如何在不重启的情况下重启锁管理器。我真的很想知道为什么 sysctl.conf 在启动时不起作用,但我愿意只重启锁管理器。

这是在 Ubuntu 服务器 10.04.2、内核 2.6.32-31-server 上。我知道有些守护进程会检查其配置文件的权限,如果权限太宽松,它们就会拒绝工作,但 sysctl.conf 是 644 root:root,我很确定这是默认值。

答案1

看一下一些 sysctl 在启动时被忽略简而言之,这些设置在某些内核模块加载之前就已应用。

答案2

在 ubuntu 上,它将作为运行 /etc/init/procps.conf 文件的 upstart 守护进程的一部分被加载。

检查它是否存在并且您没有禁用它。

答案3

如果它与 Debian 类似,则启动时sysctl会运行/etc/init.d/procps。为了进行比较,我的默认启动器如下所示。

# /etc/init.d/procps: Set kernel variables from /etc/sysctl.conf
# Description:  Loads kernel parameters that are specified in /etc/sysctl.conf
which sysctl > /dev/null || exit 0
                   for file in /etc/sysctl.conf /etc/sysctl.d/*.conf ; do
                                   sysctl $quiet -p "$file"

可能值得检查它是否存在,以及您的运行级别初始化符号链接是否完整。(rcS.d只有我的在。)它不是敏感的配置文件,因此 644 权限应该不是问题。

相关内容