Linux(入門基礎):119---內核配置說明:sysctl命令、/etc/sysctl.conf、/proc/sys/

前言

  • ulimit命令、/etc/security/limits.conf、/etc/security/limit.d/也可以用來修改配置參數,但是它們修改的是用戶級別的配置參數。本人介紹的是修改內核的配置參數
  • 用戶級別的配置參數的值不能超過內核的配置參數的值,因此在使用在使用“ulimit命令、/etc/security/limits.conf、/etc/security/limit.d/”時有相關侷限性,建議結合兩篇文章儀器分析:https://blog.csdn.net/qq_41453285/article/details/87939151

一、/proc/sys/目錄

  • /proc/sys/目錄下存放着當前操作系統內核的相關配置參數
  • 默認目錄如下所示,其中:
    • abi:應用的二進制信息
    • debug:調試相關的系統配置目錄
    • dev:設備相關的系統配置目錄
    • fs:文件系統相關的系統配置目錄
    • kernel:內核相關的系統配置目錄
    • net:網絡相關的系統配置目錄
    • user:用戶相關的系統配置目錄
    • vm:內存相關的系統配置目錄

與/etc/sysctl.conf配置文件的關係

  • 在/etc/sysctl.conf配置文件中也可以配置內核參數,/etc/sysctl.conf中配置的參數就是/proc/sys/目錄下對應文件的內容。當在/etc/sysctl.conf配置文件中設置了配置參數,並且使用sysctl -p命令生效之後,/etc/sysctl.conf配置文件中的內容就會被更新到/proc/sys/對應的文件中(關於演示案例和sysctl命令,請參閱文章最後的演示案例)
  • 例如:在/etc/sysctl.conf配置文件中kernel.sysrq的值爲1,那麼在/proc/sys/的kernel目錄下就會有一個sysrq文件,其值爲1

  • 備註:在/etc/sysctl.conf中配置之後,需要使用sysctl -p命令加載纔可以將配置的值更新到/proc/sys/目錄對應的文件中

比較常用的幾個參數

  • nr_open:單個進程打開文件句柄數上限。默認值爲1048576(1024*1024)
  • file-max:下面的配置指定了系統範圍內所有進程可打開的文件句柄的數量限制(系統級別,kernel-level)。默認值爲180566

二、/etc/sysctl.conf配置文件

  • 功能:用於控制內核相關的配置參數
  • 本人系統默認配置如下:

與/proc/sys/目錄的關係

  • 在/etc/sysctl.conf配置文件中配置了參數之後,需要使用sysctl -p命令將/etc/sysctl.conf配置文件的內容更新到/proc/sys/目錄對應的文件中(上面已經介紹過了)
  • 備註:光修改/etc/sysctl.conf配置文件是沒有用的,還需要使用sysctl -p命令將/etc/sysctl.conf配置文件的內容加載到/proc/sys/目錄對應的文件中

在百萬併發服務器中常用的幾個配置

  • nr_open:單個進程打開文件句柄數上限
fs.nr_open
  • file-max:下面的配置指定了系統範圍內所有進程可打開的文件句柄的數量限制(系統級別,kernel-level)
fs.file-max

三、sysctl命令

  • sysctl命令用於運行時配置內核參數,其修改的參數就是位於/proc/sys目錄的文件的內容
  • sysctl的設置只在本次會話生效,當系統重啓(必須是重啓而不是當前會話重啓)之後,其修改的內容就會回到之前的內容
  • 如果想要永久修改:請將配置參數寫入/etc/sysctl.conf配置文件中,然後使用sysctl -p命令將/etc/sysctl.conf配置文件的內容加載到/proc/sys/目錄對應的文件中

命令格式

sysctl [-n] [-e] -w variable=value

sysctl [-n] [-e] -p <filename> (default /etc/sysctl.conf)

sysctl [-n] [-e] -a
  • 相關參數如下:
    • -w   臨時改變某個指定參數的值,如
    • -p:從指定的文件加載系統參數,如不指定即從/etc/sysctl.conf中加載
    •  -a   顯示所有的系統參數
  • 例如下面查看當先所有的系統參數(內容太多,截取部分)

演示案例

  • 第一步:我們只使用sysctl命令修改file-max參數,將所有進程可打開的文件句柄的數量修改爲1048576。並且查看/proc/sys/fs/file-max文件可以顯示修改成功
sudo sysctl -w fs.file-max=1048576

cat /proc/sys/fs/file-max

 

  • 第二步:然後我們重新啓動系統(必須重啓,關閉會話不算),查看/proc/sys/fs/file-max文件發現回到原來的默認值了

  • 第三步:現在我們修改/etc/sysctl.conf文件,在裏面修改file-max的值爲1048576,然後保存退出

  • 第四步:由於還沒有使用sysctl命令將/etc/sysctl.conf文件的內容更新到/proc/sys/fs/file-max中,所以查看還是顯示180566

  • 第五步:使用下面的sysctl命令將/etc/sysctl.conf文件的內容更新到/proc/sys/fs/file-max中生效,命令執行完之後查看/proc/sys/fs/file-max文件,更新成功
sudo sysctl -p

  • 第六步:當我們重啓之後,上面的配置仍然有效不會消失
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章