/etc/sysctl.conf在重新启动后不会保留

为了减少频繁的内存刷新到文件系统的任务,我在/etc/syctl.conf添加了以下两行。

 vm.dirty_background_ratio = 50 vm.dirty_ratio = 80 

然后我跑了, sudo sysctl -p并且改变正确地生效了。 但是,在系统重启后,我仍然看到dirty_ratio和dirty_background_ratio的旧值。

 new-sys-admin@ThinkPad:~$ sysctl -n vm.dirty_background_ratio 10 new-sys-admin@ThinkPad:~$ sysctl -n vm.dirty_ratio 5 

我正在运行Ubuntu 12.04.3 LTS 3.2.0-52-generic-pae。 看了几个post后:

  • Ubuntu在每次启动时运行sysctl -p的方法?
  • Ubuntu 12.04,为什么服务procps启动不启动procps?

看起来像upstart作业,/ /etc/sysctl.d/* /etc/init.d/procps应该在系统启动时运行,并通过/etc/init/procup.conf重新加载/etc/sysctl.d/*/etc/sysctl.conf内容但是它似乎不是这样的。

在下次重新启动时,我运行了service procps start并且更改生效。 我想知道如何使procps在启动时持续运行,如果我错过了使这些更改持久化的额外步骤。

编辑1

根据Bill的建议,还尝试在/etc/sysctl.d/10-local.conf使用这些值。

 new-sys-admin@ThinkPad:~$ cat /etc/sysctl.d/10-local.conf vm.dirty_background_ratio = 50 vm.dirty_ratio = 80 

重新启动后,将还原值。

上面Gsus的答案也解决了我的问题。

/usr/lib/pm-utils/power.d/laptop-mode sysctl处理/etc/sysctl.d的文件写入值dirty_ratio=10 dirty_background_ratio=5 writeback_centisecs=500

但是我觉得在pm脚本中评论一行不太舒服。

因为我在桌面系统上运行并且意识到我不需要从上面进行dirty_*更改,所以我尝试将/usr/lib/pm-utils/power.d/laptop-mode移动到另一个位置。 pm utils没有抱怨。

因此,可能会转移文件,以便更新程序包不会重新创建它。

 sudo dpkg-divert --add --rename --divert /usr/lib/pm-utils/power.d/laptop-mode /usr/lib/pm-utils/laptop-mode.diverted sudo mv /usr/lib/pm-utils/power.d/laptop-mode /usr/lib/pm-utils/laptop-mode.diverted 

如果要手动调整参数dirty_ratio dirty_background_ratio writeback_centisecs则应该执行此操作。

对于电源管理工具,当他们在/etc/sysctl.d中创建文件以更好地了解正在发生的事情时,它会更清楚。

/usr/lib/pm-utils/power.d/laptop-mode ,注释掉函数laptop_mode_ac()的以下行:

 write_values 0 10 5 500 

那里的值变为:

 dirty_ratio = 10 vm.dirty_background_ratio = 5 

然后重新启动,sysctl的值必须保持不变。

将命令放在/etc/sysctl.d下的/etc/sysctl.d 。 像10-local.conf这样的东西包含:

 vm.dirty_background_ratio = 50 vm.dirty_ratio = 80 

如果文件保留在原位,则应在每次重新启动时运行。