/etc/security/limits.conf 詳解與配置

1、 /etc/security/limits.conf 詳解

/etc/security/limits.conf 文件實際是 Linux PAM(插入式認證模塊,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,並且只針對於單個會話。 該設置不會影響系統服務的資源限制。還要注意 /etc/security/limits.d/ 的這個目錄,shell

/etc/security/limits.conf 配置解析

# /etc/security/limits.conf
#
#This file sets the resource limits for the users logged in via PAM.
該文件爲經過PAM登陸的用戶設置資源限制。
#It does not affect resource limits of the system services.
#它不影響系統服務的資源限制。
#Also note that configuration files in /etc/security/limits.d directory,
#which are read in alphabetical order, override the settings in this
#file in case the domain is the same or more specific.
請注意/etc/security/limits.d下按照字母順序排列的配置文件會覆蓋 /etc/security/limits.conf中的
domain相同的的配置
#That means for example that setting a limit for wildcard domain here
#can be overriden with a wildcard setting in a config file in the
#subdirectory, but a user specific setting here can be overriden only
#with a user specific setting in the subdirectory.
這意味着,例如使用通配符的domain會被子目錄中相同的通配符配置所覆蓋,可是某一用戶的特定配置
只能被字母路中用戶的配置所覆蓋。其實就是某一用戶A若是在/etc/security/limits.conf有配置,當
/etc/security/limits.d子目錄下配置文件也有用戶A的配置時,那麼A中某些配置會被覆蓋。最終取的值是 /etc/security/limits.d 下的配置文件的配置。

#
#Each line describes a limit for a user in the form:
#每一行描述一個用戶配置
#<domain> <type> <item> <value>

#Where:
#<domain> can be:
# - a user name    一個用戶名
# - a group name, with @group syntax    用戶組格式爲@GROUP_NAME
# - the wildcard *, for default entry    默認配置爲*,表明全部用戶
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit 
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits 
# - "hard" for enforcing hard limits
有soft,hard和-,soft指的是當前系統生效的設置值,軟限制也能夠理解爲警告值。
hard表名系統中所能設定的最大值。soft的限制不能比hard限制高,用-表名同時設置了soft和hard的值。
#<item> can be one of the following:    <item>可使如下選項中的一個
# - core - limits the core file size (KB)    限制內核文件的大小。
# - data - max data size (KB)    最大數據大小
# - fsize - maximum filesize (KB)    最大文件大小
# - memlock - max locked-in-memory address space (KB)    最大鎖定內存地址空間
# - nofile - max number of open file descriptors 最大打開的文件數(以文件描敘符,file descripter計數) 
# - rss - max resident set size (KB) 最大持久設置大小
# - stack - max stack size (KB) 最大棧大小
# - cpu - max CPU time (MIN)    最多CPU佔用時間,單位爲MIN分鐘
# - nproc - max number of processes 進程的最大數目
# - as - address space limit (KB) 地址空間限制 
# - maxlogins - max number of logins for this user    此用戶容許登陸的最大數目
# - maxsyslogins - max number of logins on the system    系統最大同時在線用戶數
# - priority - the priority to run user process with    運行用戶進程的優先級
# - locks - max number of file locks the user can hold    用戶能夠持有的文件鎖的最大數量
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19] max nice優先級容許提高到值
# - rtprio - max realtime pr iority
#
#<domain> <type> <item> <value>
#

#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@st

/etc/security/limits.d/ 目錄

  • /etc/security/limits.d/ 目錄
    該目錄下默認有 *-nproc.conf 文件,該文件是用於限制用戶的線程限制。咱們也能夠在該目錄建立配置文件在 /etc/security/limits.d/ 下,以 .conf 結尾。
    • centos 7centos

      在CentOS 7版本中爲/etc/security/limits.d/20-nproc.confdom

      # Default limit for number of user's processes to prevent
      # accidental fork bombs.
      # See rhbz #432903 for reasoning.
      
      *          soft    nproc     4096 # 全部的用戶默承認以打開最大的進程數爲 4096
      root       soft    nproc     unlimited # root 用戶默承認以打開最大的進程數 無限制的。
    • CentOS 6socket

      在CentOS 6版本中爲/etc/security/limits.d/90-nproc.confide

2、 ulimit 如何配置

基礎配置

咱們不將全部的配置配置在/etc/security/limits.conf 而是將配置放在 /etc/security/limits.d/ 下。
好比咱們將 nofile的配置放在 /etc/security/limits.d/20-nofile.conf ,nproc 的配置放在 /etc/security/limits.d/20-nproc.conf.大數據

通常咱們須要配置的 /etc/security/limits.d/20-nofile.conf 爲。this

root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535

/etc/security/limits.d/20-nproc.conf 設置爲spa

*    -     nproc   65535
root soft  nproc  unlimited
root hard  nproc  unlimited

注意覆蓋點的問題。

示例一:
/etc/security/limits.conf 配置了:線程

root soft nofile 65538
root hard nofile 65538
* soft nofile 65539
* hard nofile 65539

這個root 用戶的 默認取值是 65538 ,* 統配符雖然在 root 配置後面,可是 root 的配置只能被 root 進行覆蓋。

咱們看下這個配置,當這樣配置的時候

root soft nofile 65538
root hard nofile 65538
* soft nofile 65539
* hard nofile 65539
root soft nofile 65539

這個的 root 用戶的取值仍是 65538 ,由於雖然 root soft nofile 65539 會覆蓋咱們以前的配置,可是這個配置是不生效的。由於 root soft nofile 65539 配置的值大於root hard nofile 65538 , soft 配置的值不能大於 hard.

示例二:
當咱們在 /etc/security/limits.conf 配置了:

root soft nofile 65538
root hard nofile 65538
* soft nofile 65539
* hard nofile 65539

而後咱們在 /etc/security/limits.d/20-nofile.conf 配置了:

root soft nofile 65536
root hard nofile 65536
* soft nofile 65540
* hard nofile 65540

最後的取值是會取 /etc/security/limits.d/20-nofile.conf 裏面的值。

  1. 配置,只能被特定覆蓋。
  2. /etc/security/limits.d/ 下文件的相同配置能夠覆蓋 /etc/security/limits.conf

具體詳細配置根據應用狀況進行配置。

3、ulimit 配置後生效

臨時配置

設置能夠打開文件的最大數爲 65536

ulimit  -SHn  65536

重啓後失效。

永久配置

配置到配置文件/etc/security/limits.conf或者 /etc/security/limits.d/ 中。
而後退出當前會話,從新登陸。 便可生效,重啓配置也會保留。

配置不生效的問題

後續補充。

4、ulimit 經常使用命令

-S    use the `soft' resource limit # 設置軟限制
      -H    use the `hard' resource limit # 設置硬限制
      -a    all current limits are reported# 顯示全部的配置。
      -b    the socket buffer size # 設置socket buffer 的最大值。
      -c    the maximum size of core files created # 設置core文件的最大值.
      -d    the maximum size of a process's data segment  # 設置線程數據段的最大值
      -e    the maximum scheduling priority (`nice') # 設置最大調度優先級
      -f    the maximum size of files written by the shell and its children # 建立文件的最大值。
      -i    the maximum number of pending signals # 設置最大的等待信號
      -l    the maximum size a process may lock into memory #設置在內存中鎖定進程的最大值
      -m    the maximum resident set size 
      -n    the maximum number of open file descriptors # 設置最大能夠的打開文件描述符。
      -p    the pipe buffer size
      -q    the maximum number of bytes in POSIX message queues
      -r    the maximum real-time scheduling priority
      -s    the maximum stack size
      -t    the maximum amount of cpu time in seconds
      -u    the maximum number of user processes  # 設置用戶能夠建立的最大進程數。
      -v    the size of virtual memory  # 設置虛擬內存的最大值
      -x    the maximum number of file locks

查看配置

查看全部的配置

ulimit  -a

查看配置的最大打開文件數

ulimit  -n

更改配置

ulimit  -SHn  65536

文章參考: /etc/security/limits.conf配置文件詳解

相關文章
相關標籤/搜索