1. 程式人生 > 實用技巧 >linux修改檔案控制代碼數量

linux修改檔案控制代碼數量

說明:

liunx中檔案控制代碼有兩種,一種是使用者級的,一種是系統級的

檔案控制代碼限制,就是規定的單個程序能夠開啟的最大檔案控制代碼數量(Socket連線也算在裡面,預設大小1024)

1 使用者級的修改

  1.1 使用者級修改臨時生效方法

    重啟後失效
    ulimit 命令身是分軟限制和硬限制,加-H就是硬限制,加-S就是軟限制。預設顯示的是軟限制,如果執行ulimit 命令修改時沒有加上-H或-S,就是兩個引數一起改變。硬限制就是實際的限制,而軟限制是警告限制,它只會給出警告。

ulimit -SHn 10000

  

  1.2 使用者級修改永久有效方式

vi /etc/security/limits.conf

    修改/etc/security/limits.conf檔案,新增如下內容:

    * soft nofile 204800  
    * hard nofile 204800

    * soft nproc 204800
    * hard nproc 204800

    或者分別執行如下四個命令:

  echo "* soft nofile 204800"  >> /etc/security/limits.conf
    echo "* hard nofile 204800"  >> /etc/security/limits.conf

    echo "* soft nproc 204800"  >> /etc/security/limits.conf
    echo "* hard nproc 204800 "  >> /etc/security/limits.conf

    vi修改和echo最終效果一樣,都是修改該檔案(* 表示所用的使用者)

    1.3 使用者級永久生效方式修改後,重啟伺服器

reboot

    1.4 檢視使用者級修改是否生效

ulimit -a

2 系統級修改

    其實上面的修改都是對一個程序開啟的檔案控制代碼數量的限制,我們還需要設定系統的總限制才可以。

    假如,我們設定程序開啟的檔案控制代碼數是1024 ,但是系統匯流排制才500,所以所有程序最多能開啟檔案控制代碼數量500。從這裡我們可以看出只設置程序的開啟檔案控制代碼的數量是不行的。所以需要修改系統的總限制才可以。

  2.1 臨時修改方式

echo  6553560 > /proc/sys/fs/file-max

  2.2 永久生效方式

vi /etc/sysctl.conf

    修改/etc/sysctl.conf 檔案,加入:

fs.file-max=65535

    

    或者執行如下修改命令:

echo   fs.file-max = 6553560  >> /etc/sysctl.conf

    使用vi修改檔案和使用echo修改檔案,最終效果都一樣。

  2.3 系統級永久生效方式修改後,重啟伺服器,才能生效

reboot

  2.4 檢視系統級檔案控制代碼修改,是否生效

sudo sysctl -p