在 Linux 中,似乎当您更改/设置 sysctl 中的值时,sysctl 将在每次启动时即时应用这些设置,但这些设置将保持默认状态,直到 sysctl 启动并应用用户设置的值。
如何更改默认值,使其始终为用户设置的值,从而消除默认值的时间窗口?
或者我一开始就错了(sysctl实际上永久地改变了值)?
许多内核参数的“默认”值sysctl被编译到内核本身中。
示例: 在 中默认kernel.numa_balancing_scan_delay_ms设置为,在 中加载。1000./kernel/sched/fair.c./kernel/sysctl.c
您可以在运行时使用sysctl3更改这些。systemd-sysctl.servicesystemd在启动过程的早期阶段执行此操作。
由于某种原因,听起来您正在很早就初始化一些内核参数,以后无法设置而必须在启动时设置。如果早期启动服务仍然太晚,并且您不能容忍sysctl这么晚设置参数,也许您可以在引导加载程序的内核行中的boot 2处设置参数。
如果您做不到这一点,您可能需要使用您想要的默认值编译自定义内核1。
有三种方法可以将选项传递给内核并从而控制其行为:
/etc/sysctl.conf设置 中或*.conf文件中的值/etc/sysctl.d/。
设置完成后,您可以通过运行来重新加载配置sudo sysctl --system。
man 8 sysctl| 归档时间: |
|
| 查看次数: |
6865 次 |
| 最近记录: |