Sysctl

sysctl.conf 是最後一場比賽嗎?

  • September 22, 2020

我在哪裡可以找到sysctl.conf基於最後一場比賽的官方文件?

因此,文件中有兩個條目/etc/sysctl.conf

vm.swappiness=10
vm.swappiness=11

哪個會贏?最後一個?如果/etc/sysctl.d目錄中有文件會怎樣?

我不認為有任何這樣的官方文件。sysctl條目由procpssystemd 處理;但是兩個項目的文件都沒有解決如何在同一個配置文件中處理條目。

簡短的版本是最後一個條目sysctl.conf獲勝,即使存在其他文件(在/etc/sysctl.d或其他地方),無論使用哪個系統載入設置。

procps

要了解如何procps處理條目,我們需要查看sysctl. 這表明在不知道較早條目的情況下處理了後面的條目,因此最後一個獲勝(查看Preload函式)。當在命令行上給出多個配置文件時,它們會按順序處理,如手冊頁中所述

使用這個選項意味著參數sysctl是文件,它們按照指定的順序讀取。

該選項使事情變得更加複雜--system,但至少記錄在案:

從所有系統配置文件載入設置。文件按從上到下的給定順序從以下列表中的目錄中讀取。一旦載入了給定文件名的文件,後續目錄中的任何同名文件都將被忽略。

  • /run/sysctl.d/*.conf
  • /etc/sysctl.d/*.conf
  • /usr/local/lib/sysctl.d/*.conf
  • /usr/lib/sysctl.d/*.conf
  • /lib/sysctl.d/*.conf
  • /etc/sysctl.conf

文件不是很完整。如上所述,給定文件中的條目按順序應用,並覆蓋之前賦予相同設置的任何值。此外,查看PreloadSystem函式顯示文件按名稱順序處理,並且/etc/sysctl.conf是無條件處理的(,較早目錄中的同名文件不會覆蓋它)。

系統

systemd 有自己的sysctl處理程序,它記錄在手冊sysctl.d中;有一個關於優先級的部分:

配置文件按優先順序從 、 和 中的/etc/目錄/run/讀取。/usr/lib/這些配置目錄中的每個配置文件都應以. 中的文件覆蓋和中的同名文件。中的文件會覆蓋 中的同名文件。filename.conf``/etc/``/run/``/usr/lib/``/run/``/usr/lib/

$$ … $$所有配置文件都按其文件名按字典順序排序,而不管它們位於哪個目錄中。如果多個文件指定相同的選項,則文件中具有字典順序最新名稱的條目將優先。建議在所有文件名前加上一個兩位數字和一個破折號,以簡化文件的排序。

同樣,單個配置文件中後面的條目會覆蓋早期的條目。

引用自:https://unix.stackexchange.com/questions/477940