Linux中的Sysctl命令

作為Linux系統管理員,有時您可能需要修改默認內核的行為。 例如,您可能需要啟用魔術SysRq鍵或增加內核將接受的連接數。 可以在構建內核時,系統引導時或運行時設置內核參數。

本文介紹了如何使用 sysctl 命令以在運行時查看和修改內核參數。

使用 sysctl 查看內核參數

要查看所有當前內核參數,請調用 sysctl 用命令 -a 選項:

sysctl -a

這將輸出一個很大的列表,看起來類似於以下內容,其中每一行都包含參數名稱及其值:

abi.vsyscall32 = 1
debug.exception-trace = 1
debug.kprobes-optimization = 1
...

所有用戶都可以查看當前的內核參數。 只有root用戶可以修改其值。

您可以通過將單個參數的名稱作為參數傳遞給它來檢查單個參數的值 sysctl。 例如,要檢查當前的可交換性值,請輸入:

sysctl vm.swappiness
vm.swappiness = 60

Swappiness是Linux內核的一個屬性,它定義系統使用交換空間的頻率。

sysctl 命令從中讀取信息 /proc/sys 目錄。 /proc/sys 是一個虛擬目錄,其中包含可用於查看和設置當前內核參數的文件對象。

您還可以通過顯示適當文件的內容來查看參數值。 唯一的區別是文件的表示方式。 例如,兩者 sysctl vm.swappinesscat /proc/sys/vm/swappiness 將給出相同的輸出。 使用時 sysctl 目錄斜杠由點代替,並且 proc.sys 假設是一部分。

使用 sysctl 修改內核參數

要在運行時設置內核參數,請運行 sysctl 命令,後跟以下格式的參數名稱和值:

sysctl -w parameter=value

如果值包含空格或特殊字符,請將該值括在雙引號中。 您還可以傳遞多個 parameter=value 對在同一命令中。

在生產系統上更改內核設置時,請格外小心,因為這可能會使內核不穩定,並且您需要重新引導系統。

例如,要啟用IPv4數據包轉發,可以運行:

sysctl -w net.ipv4.ip_forward=1

更改將立即生效,但不是持久的。 系統重新引導後,將加載默認值。

要永久設置參數,您需要將設置寫入 /etc/sysctl.conf 或其他配置文件 /etc/sysctl.d 目錄:

sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.conf

更改參數的另一種方法是使用 echo 命令將設置寫入文件中的 /proc/sys 目錄。 例如,您可以使用以下命令來代替運行上面的命令:

echo 1 > /proc/sys/net/ipv4/ip_forward

-p 選項允許您從配置文件中加載設置:

sysctl -p /etc/sysctl.d/file_name.conf

如果沒有提供文件, sysctl/etc/sysctl.conf 文件。

結論#

sysctl 命令允許您查看和更改Linux內核參數。

如有任何疑問,請隨時發表評論。

sysctl內核終端

Sidebar