sysctl.conf 是最後一場比賽嗎?
我在哪裡可以找到
sysctl.conf
基於最後一場比賽的官方文件?因此,文件中有兩個條目
/etc/sysctl.conf
:vm.swappiness=10 vm.swappiness=11
哪個會贏?最後一個?如果
/etc/sysctl.d
目錄中有文件會怎樣?
我不認為有任何這樣的官方文件。
sysctl
條目由procps
systemd 處理;但是兩個項目的文件都沒有解決如何在同一個配置文件中處理條目。簡短的版本是最後一個條目
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/
$$ … $$所有配置文件都按其文件名按字典順序排序,而不管它們位於哪個目錄中。如果多個文件指定相同的選項,則文件中具有字典順序最新名稱的條目將優先。建議在所有文件名前加上一個兩位數字和一個破折號,以簡化文件的排序。
同樣,單個配置文件中後面的條目會覆蓋早期的條目。