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