如何更改 sysctl 的“默认”值?

Sam*_*Sam 3 linux

在 Linux 中,似乎当您更改/设置 sysctl 中的值时,sysctl 将在每次启动时即时应用这些设置,但这些设置将保持默认状态,直到 sysctl 启动并应用用户设置的值。

如何更改默认值,使其始终为用户设置的值,从而消除默认值的时间窗口?

或者我一开始就错了(sysctl实际上永久地改变了值)?

Del*_*tik 5

更新答案

许多内核参数的“默认”值sysctl被编译到内核本身中。

示例: 在 中默认kernel.numa_balancing_scan_delay_ms设置为,在 中加载。1000./kernel/sched/fair.c./kernel/sysctl.c

您可以在运行时使用sysctl3更改这些。systemd-sysctl.servicesystemd在启动过程的早期阶段执行此操作。

由于某种原因,听起来您正在很早就初始化一些内核参数,以后无法设置而必须在启动时设置。如果早期启动服务仍然太晚,并且您不能容忍sysctl这么晚设置参数,也许您可​​以在引导加载程序的内核行中的boot 2处设置参数。

如果您做不到这一点,您可能需要使用您想要的默认值编译自定义内核1

来自 Arch Linux 维基

有三种方法可以将选项传递给内核并从而控制其行为:

  1. 构建内核时。详细信息请参见内核编译
  2. 启动内核时(通常是从引导加载程序调用时)。
  3. /proc在运行时(通过和中的文件/sys)。详细信息请参见sysctl 。

原答案

/etc/sysctl.conf设置 中或*.conf文件中的值/etc/sysctl.d/

设置完成后,您可以通过运行来重新加载配置sudo sysctl --system


其他资源