溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux中3種修改打開文件數(shù)量限制的方法分別是什么

發(fā)布時(shí)間:2022-01-21 14:01:36 來源:億速云 閱讀:245 作者:柒染 欄目:開發(fā)技術(shù)

這篇文章給大家介紹Linux中3種修改打開文件數(shù)量限制的方法分別是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

當(dāng)文件被打開訪問時(shí),操作系統(tǒng)臨時(shí)分配一個(gè)名為文件句柄的數(shù)字。主內(nèi)存的一個(gè)特殊區(qū)域是為文件句柄預(yù)留的,這個(gè)區(qū)域的大小決定了一次可以打開多少個(gè)文件。Linux上的進(jìn)程受到許多限制,這些限制也阻礙它們正確地執(zhí)行,而且每個(gè)進(jìn)程都有幾個(gè)與之相關(guān)的限制。shell限制程序可以同時(shí)打開的文件句柄的數(shù)量。

系統(tǒng)環(huán)境

Centos7

為什么要限制打開文件的數(shù)量?

因?yàn)椴僮飨到y(tǒng)需要內(nèi)存來管理每個(gè)文件,所以可以打開的文件數(shù)可能會(huì)受到限制。由于程序也可以關(guān)閉文件處理程序,它可以創(chuàng)建任意大小的文件,直到所有可用磁盤空間都已滿為止。在這種情況下,安全性的一個(gè)方面是通過施加限制來防止資源耗盡。

可以看到Linux系統(tǒng)中打開的文件描述符的最大數(shù)量,如下所示:

[root@localhost ~]# cat /proc/sys/fs/file-max 
180965

該值顯示用戶每次登錄會(huì)話可以打開的文件數(shù),你會(huì)注意到,結(jié)果可能會(huì)因系統(tǒng)而異。出于某些原因,可能需要增加限制集的值。這就是為什么Linux系統(tǒng)提供了修改這些限制的可能性(增加或減少),方法是更改每個(gè)進(jìn)程和每個(gè)系統(tǒng)打開文件數(shù)的最大值。

方法一:使用ulimit命令

ulimit命令可用來增加在shell中打開文件的數(shù)量。這個(gè)命令是系統(tǒng)內(nèi)置命令,因此它只影響bash和從它啟動(dòng)的程序。ulimit語法如下:

ulimit  [選項(xiàng)] [限制數(shù)值]

下面選項(xiàng)決定了什么是有限的:

  • -a 顯示當(dāng)前所有限制的報(bào)告

  • -f (文件限制)限制shell能創(chuàng)建文件的大小

  • -n 限制打開的文件描述符的數(shù)量。

  • -H-S 它們分別被設(shè)置為硬限制和軟限制。硬限制可能不會(huì)隨之增加,但軟限制可能會(huì)增加。如果沒有提供任何選項(xiàng),ulimit將同時(shí)設(shè)置硬限制和軟限制。

查看當(dāng)前打開文件的軟限制,可以使用下面命令:

[root@localhost ~]# ulimit -a |grep open
open files                      (-n) 1024
或者
[root@localhost ~]# ulimit -n
1024

如果需要查看硬限制,適應(yīng)下面命令:

[root@localhost ~]# ulimit -Hn
4096

下面修改打開文件的數(shù)量:

[root@localhost ~]# ulimit -n 2048

然后來查看一下:

[root@localhost ~]# ulimit -Hn
2048
[root@localhost ~]# ulimit -Sn
2048

Linux中3種修改打開文件數(shù)量限制的方法分別是什么
發(fā)現(xiàn),設(shè)置ulimit 值的時(shí)候,沒有指定-H或者-S,兩個(gè)限制都會(huì)設(shè)定相同的值。

現(xiàn)在的問題是,如果退出登錄或者重新啟動(dòng)計(jì)算機(jī),該值將被重置。請(qǐng)記住,要使生效,需要編輯用戶的.bashrc或者.bash_profile配置文件,通過將ulimit命令行添加到文件的末尾,可以使參數(shù)生效。

[root@localhost ~]# echo "ulimit -n 2048" >> ~/.bashrc

Linux中3種修改打開文件數(shù)量限制的方法分別是什么

方法二:使用PAM模塊

最好通過名為pam_limits的PAM模塊實(shí)現(xiàn)這種限制。需要通過編輯/etc/security/limits.conf文件來配置它。這個(gè)文件包含四個(gè)基本字段:

domain:描述了在哪些實(shí)體中應(yīng)用限制。它可以是user、group(組名前面加@表示組)或匹配所有用戶,使用(*)通配符。通配符不適應(yīng)與root用戶。

type:這里表示限制為硬限制還是軟限制?硬限制是由系統(tǒng)管理員添加的,在任何情況下都不能超過,而用戶可以臨時(shí)超過軟限制。還可以使用破折號(hào)-來表示一個(gè)限制是硬的和軟的。請(qǐng)注意,軟限制可以增加到硬限制的值

type:它指定被限制條目的類型??梢允莄ore(限制核心文件大小(KB)),data(最大數(shù)據(jù)大小(KB)),fsize(最大文件大小(KB)),nofile(打開的文件描述符的最大數(shù)目),nproc(最大進(jìn)程數(shù)),等類型。更多類型可以使用man limits.conf查看。

type: 這里使填寫應(yīng)用限制的數(shù)值。

下面實(shí)例可以對(duì)照了解一下。

[root@localhost ~]# tail -12 /etc/security/limits.conf 
##

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file

Linux中3種修改打開文件數(shù)量限制的方法分別是什么
要編輯所有用戶打開文件的最大數(shù)量,可以在文件末尾添加以下行:

[root@localhost ~]# vim /etc/security/limits.conf 
* hard nofile 20000
* soft nofile 15000

Linux中3種修改打開文件數(shù)量限制的方法分別是什么
之后,需要編輯文件/etc/pam.d/login配置文件,在最后添加以下一條內(nèi)容:

[root@localhost ~]# vim /etc/pam.d/login 
session    required pam_limits.so

Linux中3種修改打開文件數(shù)量限制的方法分別是什么
保存文件。然后退出登錄,或者重啟系統(tǒng)。可以看到軟限制和硬限制的值都修改成功了:

[root@localhost ~]# ulimit -Sn
15000
[root@localhost ~]# ulimit -Hn
20000

方法三

查看系統(tǒng)最大打開文件描述符數(shù)量:

[root@localhost ~]# cat /proc/sys/fs/file-max 
180965

臨時(shí)設(shè)置該值:

[root@localhost ~]# echo "1000000" > /proc/sys/fs/file-max

Linux中3種修改打開文件數(shù)量限制的方法分別是什么
永久性設(shè)置,需要在/etc/sysctl.conf中設(shè)置,并讓它生效:

[root@localhost ~]# echo "fs.file-max = 1000000" >> /etc/sysctl.conf 
[root@localhost ~]# sysctl -p
fs.file-max = 1000000

關(guān)于Linux中3種修改打開文件數(shù)量限制的方法分別是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI