【Linux】系統打開文件最大數量限制(進程打開的最大文件句柄數設置)

利用ulimit命令可以對資源的可用性進行控制。

-H選項和-S選項分別表示對給定資源的硬限制(hard limit)和軟限制(soft limit)進行設置。

硬限制(hard limit)一旦被設置以後就不能被非root用戶修改,軟限制(soft limit)可以增長達到硬限制(hard limit)。

如果既沒有指定-H選項也沒有指定-S選項,那麼硬限制(hard limit)和軟限制(soft limit)都會被設置。

limit的值可以是一個數值,也可以是一些特定的值,比如:hardsoftunlimited,分別代表當前硬件限制、當前軟件限制、不限制。

如果limit參數被省略,除非指定-H選項,否則資源當前的軟限制(soft limit)將會被打印出來。

下面是ulimit命令的一些選項:

查看進程打開文件最大限制

  • cat /proc/sys/fs/file-max  查看系統級的最大限制
  • ulimit -n  查看用戶級的限制(一般是1024,向阿里雲華爲雲這種雲主機一般是65535)

查看某個進程已經打開的文件數

修改限制

臨時修改

ulimit -HSn 2048
或者使用
ulimit -n 2048 來修改,但是退出終端後又會變回原來未修改之前,只是臨時生效

永久修改

vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535修改完成後,退出終端再次進入,查看是否生效ulimit -n

但上述的內容只是修改進程的最大openfile數,如果想要修改系統的最大打開數,則需要下面的方法;

修改:
echo 35942900 > /proc/sys/fs/file-max
檢驗:
cat /proc/sys/fs/file-max

但是上述也是臨時修改,永久修改如下:

vim /etc/sysctl.conf
....
省略上面,在最後一行添加
fs.file-max=35942900
保存退出
使配置生效
sysctl -p
在此驗證
退出終端後再次進入終端查看
cat /proc/sys/fs/file-max

/etc/security/limits.conf 文件格式如下:

limits.conf的格式如下:

<domain>                  <type>      <item>     <value> 

username|@groupname       type        resource          limit

----------------------------------------------------------------------------

domain:username|@groupname:設置需要被限制的用戶名,組名前面加@和用戶名區別。也可以用通配符*來做所有用戶的限制。

---------------------------------------------------------------------------

type:有 soft,hard 和 -,soft 指的是當前系統生效的設置值。hard 表明系統中所能設定的最大值。soft 的最大值不能超過hard的值。用 – 就表明同時設置了 soft 和 hard 的值。

---------------------------------------------------------------------------

resource:
    core – 限制內核文件的大小
    date – 最大數據大小
    fsize – 最大文件大小
    memlock – 最大鎖定內存地址空間
    nofile – 打開文件的最大數目
    rss – 最大持久設置大小
    stack – 最大棧大小
    cpu – 以分鐘爲單位的最多 CPU 時間
    noproc – 進程的最大數目(系統的最大進程數)
    as – 地址空間限制
   maxlogins – 此用戶允許登錄的最大數目

   要使 limits.conf 文件配置生效,必須要確保 pam_limits.so 文件被加入到啓動文件中。

   查看 /etc/pam.d/login 文件中有:
   session required /lib/security/pam_limits.so

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章