RedHat向管理員提供了非常好的方法,使我們可以在系統運行時更改內核參數,而不需要重新引導系統。這是通過/proc虛擬文件系統實 現的。/proc/sys目錄下存放著大多數的內核參數,並且設計成可以在系統運行的同時進行更改。那麼sysctl命令怎麼修改內核參數呢?小編為大家分享了sysctl命令修改內核參數的方法,下面大家跟著學習啦小編一起來了解一下吧。
sysctl命令修改內核參數方法
sysctl配置與顯示在/proc/sys目錄中的內核參數.可以用sysctl來設置或重新設置聯網功能,如IP轉發、IP碎片去除以及源路由檢查等。用戶只需要編輯/etc/sysctl.conf文件,即可手工或自動執行由sysctl控制的功能。
命令格式:
sysctl [-n] [-e] -w variable=value
sysctl [-n] [-e] -p (default /etc/sysctl.conf)
sysctl [-n] [-e] -a
常用參數的意義:
-w 臨時改變某個指定參數的值,如
sysctl -w net.ipv4.ip_forward=1
-a 顯示所有的系統參數
-p 從指定的文件加載系統參數,如不指定即從/etc/sysctl.conf中加載
如果僅僅是想臨時改變某個系統參數的值,可以用兩種方法來實現,例如想啟用IP路由轉發功能:
1) #echo 1 > /proc/sys/net/ipv4/ip_forward
2) #sysctl -w net.ipv4.ip_forward=1
以上兩種方法都可能立即開啟路由功能,但如果系統重啟,或執行了
# service network restart
命令,所設置的值即會丟失,如果想永久保留配置,可以修改/etc/sysctl.conf文件
將 net.ipv4.ip_forward=0改為net.ipv4.ip_forward=1
常見用法
修改(配置)方法有三種
臨時生效2種
代碼如下:
# echo 1 > /proc/sys/net/ipv4/ip_forward // 開啟路由功能
# sysctl -w net.ipv4.ip_forward=1 // 用此選項來改變一個sysctl設置
如果系統重啟,或執行service network restart命令,所設置的值即會丟失
/proc目錄下的所有內容都是臨時性的, 所以重啟動系統後任何修改都會丟失。
永久生效1種
代碼如下:
# vi /etc/sysctl.conf
修改net.ipv4.ip_forward=0的值為1 // 打開數據包的轉發功能
代碼如下:
# sysctl -p /etc/sysctl.conf // 重新載入/etc/sysctl.conf文件,如-p後未指定路徑,則載入/etc/sysctl.conf
指定的值在系統進入多用戶模式之後被設定。並不是所有的變量都可以在這個模式下設定。
sysctl 變量的設置通常是字符串、數字或者布爾型。 (布爾型用 1 來表示'yes',用 0 來表示'no')。
代碼如下:
[root@Firewall sys]# sysctl -a //查看所有參數
[root@Firewall sys]# sysctl net.core.wmem_max //查看指定的參數
net.core.wmem_max = 131071
[root@Firewall sys]# sysctl net.core.wmem_max=256000 //修改指定的參數
net.core.wmem_max = 256000