修改RedHat 7 2 程序最大控制代碼數限制

2022-02-19 14:25:49 字數 3686 閱讀 6687

redhat對程序開啟檔案控制代碼數主要通過設定全域性值和登陸使用者分別管理。其中/proc/sys/fs下設定全域性最大檔案控制代碼數和使用者程序能開啟的最大檔案控制代碼數,這兩個引數一般情況下不需要修改。

對於普通使用者或者程序通過/etc/security/limits.conf和/etc/security/limits.d/*.conf進行管理。或者通過ulimit 命令進行設定,但通過ulimit設定只對當前shell啟動的程序有效。兩者的設定生效範圍和設定時機不同,詳見三 作業系統limits.conf生效機制。

redhat 7 以後對systemd啟動的服務的最大控制代碼數通過/etc/systemd/system.conf和/etc/systemd/user.conf進行管理。

、作業系統全域性設定

1.檢視系統的初始設定,預設為1024*1024=1048576

2.檢視/etc/sysctl.conf和/etc/sysctl.con./*.conf的設定,如果需要修改sysctl.conf,則修改後須執行sysctl –p使修改生效。

3.檢視/etc/security/limits.conf 以及/etc/security/limits.d/*.conf 。作業系統預設先載入limits.conf後載入limits.d/*.conf,所以相同配置後面會覆蓋前面。

以上引數設定的關係

a)         所有程序開啟的檔案描述符數不能超過/proc/sys/fs/file-max

b)         單個程序開啟的檔案描述符數不能超過user limit中nofile的soft limit

c)         nofile的soft limit不能超過其hard limit

d)         nofile的hard limit不能超過/proc/sys/fs/nr_open

注:soft limit表示對當前使用者生效的值,使用者可以通過命令或者指令碼進行修改,但是不能超過hard limit。而hard limit 只用root才能修改,且不能超過nr_open數。

二、對systemd啟動程式的設定

red hat 7使用systemd代替了sysv,因此systemd啟動的服務使用配置檔案/etc/systemd/system.conf和/etc/systemd/user.conf進行管理,不受limits.conf限制。如果存在/etc/system/system.conf.d/*.conf 則同樣會覆蓋system.conf相同配置項。修改該配置檔案後重啟系統後生效。主要使用以下兩個選項進行限制:

defaultlimitnofile #限制systemd啟動程序開啟檔案數

defaultlimitnproc #限制systemd建立程序數

系統限制

普通使用者

systemctl啟動的單個服務如何修改開啟控制代碼數:

1.通過命令檢視服務對應的配置檔案:

3.通過以下命令使配置生效

sudo systemctl deamon-reload

、作業系統limis.conf生效機制

ulimit –a顯示如下,其中-n後面的為程序可以開啟的最大檔案控制代碼數。其他值為系統預設值。通過ulimit  -n設定的值只限制當前shell啟動程序可以開啟的檔案控制代碼數。

linux對使用者使用資源的限制通過pam對登陸使用者進行身份驗證並設定相應的限制。

具體順序如下。從使用者登陸開始,作業系統會依次執行如下三部

1. /etc/pam.d/login

2. /etc/pam.d/system-auth

3. /lib64/security/pam_limits.so

具體內容如下:

1.在/etc/pam.d/login 中呼叫system-auth

2. 在/etc/pam.d/system-auth 呼叫pam_limits.so

3. 通過grep檢視/lib64/security/pam_limits.so 可以看到limits.conf和limits.d/*.conf

4.在rc.local中設定ulimit -n 6635是否可以呢?

先說答案,可能不行。主要是作業系統載入順序導致的,作業系統在啟動時載入rc.local,然後在使用者登陸時執行 limits.conf,最後在設定使用者環境變數時執行/etc/profile 。因此後面的limits.conf和/etc/profile 中的 ulimit 命令設定均可能覆蓋以前的設定。 

結論

每次使用者登入時會先載入/etc/security/limits.conf 以及/etc/security/limits.d/*.conf的配置,再執行/etc/profile 中的設定,因此在更改程序開啟最大檔案控制代碼數限制時有兩種方案:

1.按格式修改/etc/security/limits.conf,重新登陸使limits.conf生效,然後再啟動服務程式;

2.在/etc/profile 新增ulimit –n 65535 設定,重新登陸或者執行source /etc/profile命令,然後啟動服務程式;

針對設定了免密登陸的情況,由於沒有了了使用者登陸驗證過程,所以不會載入limits.conf檔案,因此建議通過/etc/profile 中新增ulimit –n 65535命令設定,然後在啟動服務程式之前執行source命令使該設定生效。

網路安裝redhat7 2虛擬機器

1.該實驗應用場景 當我們需要大量給多台主機裝虛擬機器的時候,想要做到同步且自動安裝的情況下。我們知道網路安裝需要pxelinux.0。下面我們通過pxelinux.0來找尋一系列安裝工具。2.該實驗用到的工具 1 rhel server 7.2 x86 64 iso 2 syslinux 4.05...

在RedHat 7 2中安裝boost庫

redhat7.2 64bit boost 1.64.0 解壓tar vzxf tar.gz,進入解壓後的目錄,執行.booststrap.sh,會生成乙個bjam的可執行程式。執行.bjam 進行編譯,乙個過程有點漫長.編譯成功後在資料夾下,會有stage bin.v2兩個目錄。bin.v2中存的...

redhat7 2安裝ck報錯解決及yum配置

clickhouse client 19.17.10.1 1.el7.x86 64.rpm clickhouse common static 19.17.10.1 1.el7.x86 64.rpm clickhouse server 19.17.10.1 1.el7.x86 64.rpm click...