在Linux中修改開啟檔案數量限制的3種方法
當檔案被開啟訪問時,作業系統臨時分配一個名為檔案控制程式碼的數字。主記憶體的一個特殊區域是為檔案控制程式碼預留的,這個區域的大小決定了一次可以開啟多少個檔案。 上的程式受到許多限制,這些限制也阻礙它們正確地執行,而且每個程式都有幾個與之相關的限制。 限制程式可以同時開啟的檔案控制程式碼的數量。 |
7
因為作業系統需要記憶體來管理每個檔案,所以可以開啟的檔案數可能會受到限制。由於程式也可以關閉檔案處理程式,它可以建立任意大小的檔案,直到所有可用磁碟空間都已滿為止。在這種情況下,安全性的一個方面是通過施加限制來防止資源耗盡。
可以看到 中開啟的檔案描述符的最大數量,如下所示:
[root@localhost ~]# cat /proc/sys/fs/file-max 180965
該值顯示使用者每次登入會話可以開啟的檔案數,你會注意到,結果可能會因系統而異。出於某些原因,可能需要增加限制集的值。這就是為什麼Linux系統提供了修改這些限制的可能性(增加或減少),方法是更改每個程式和每個系統開啟檔案數的最大值。
ulimit 可用來增加在shell中開啟檔案的數量。這個命令是系統內建命令,因此它隻影響bash和從它啟動的程式。ulimit語法如下:
ulimit [選項] [限制數值]
下面選項決定了什麼是有限的:
-
-a
顯示當前所有限制的報告 -
-f
(檔案限制)限制shell能建立檔案的大小 -
-n
限制開啟的檔案描述符的數量。 -
-H
和-S
它們分別被設定為硬限制和軟限制。硬限制可能不會隨之增加,但軟限制可能會增加。如果沒有提供任何選項,ulimit將同時設定硬限制和軟限制。
檢視當前開啟檔案的軟限制,可以使用下面命令:
[root@localhost ~]# ulimit -a |grep open open files (-n) 1024 或者 [root@localhost ~]# ulimit -n 1024
如果需要檢視硬限制,適應下面命令:
[root@localhost ~]# ulimit -Hn 4096
下面修改開啟檔案的數量:
[root@localhost ~]# ulimit -n 2048
然後來檢視一下:
[root@localhost ~]# ulimit -Hn 2048 [root@localhost ~]# ulimit -Sn 2048
發現,設定ulimit 值的時候,沒有指定-H或者-S,兩個限制都會設定相同的值。
現在的問題是,如果退出登入或者重新啟動計算機,該值將被重置。請記住,要使生效,需要編輯使用者的
.bashrc或者.bash_profile
配置檔案,通過將ulimit命令列新增到檔案的末尾,可以使引數生效。
[root@localhost ~]# echo "ulimit -n 2048" >> ~/.bashrc
最好通過名為
pam_limits
的PAM模組實現這種限制。需要通過編輯
/etc/security/limits.conf
檔案來配置它。這個檔案包含四個基本欄位:
domain
:描述了在哪些實體中應用限制。它可以是user、group(組名前面加@表示組)或匹配所有使用者,使用(*)萬用字元。萬用字元不適應與root使用者。
type
:這裡表示限制為硬限制還是軟限制?硬限制是由系統管理員新增的,在任何情況下都不能超過,而使用者可以臨時超過軟限制。還可以使用破折號
-
來表示一個限制是硬的和軟的。請注意,軟限制可以增加到硬限制的值
type
:它指定被限制條目的型別。可以是core(限制核心檔案大小(KB)),data(最大資料大小(KB)),fsize(最大檔案大小(KB)),nofile(開啟的檔案描述符的最大數目),nproc(最大程式數),等型別。更多型別可以使用
man limits.conf
檢視。
type
: 這裡使填寫應用限制的數值。
下面例項可以對照了解一下。
[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
要編輯所有使用者開啟檔案的最大數量,可以在檔案末尾新增以下行:
[root@localhost ~]# vim /etc/security/limits.conf * hard nofile 20000 * soft nofile 15000
之後,需要編輯檔案/etc/pam.d/login配置檔案,在最後新增以下一條內容:
[root@localhost ~]# vim /etc/pam.d/login session required pam_limits.so
儲存檔案。然後退出登入,或者重啟系統。可以看到軟限制和硬限制的值都修改成功了:
[root@localhost ~]# ulimit -Sn 15000 [root@localhost ~]# ulimit -Hn 20000
檢視系統最大開啟檔案描述符數量:
[root@localhost ~]# cat /proc/sys/fs/file-max 180965
臨時設定該值:
[root@localhost ~]# echo "1000000" > /proc/sys/fs/file-max
永久性設定,需要在
/etc/sysctl.conf
中設定,並讓它生效:
[root@localhost ~]# echo "fs.file-max = 1000000" >> /etc/sysctl.conf [root@localhost ~]# sysctl -p fs.file-max = 1000000
所有程式開啟的檔案描述符數量不能超過/proc/sys/fs/file-max。單個程式開啟的檔案描述符數不能超過user limit中nofile的soft limit。nofile的soft limit不能超過其hard limit。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2794001/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux中修改開啟檔案的數量限制Linux
- 在Linux中如何檢視檔案的修改日期Linux
- 監聽檔案修改的四種方法
- linux系統檔案開啟數Linux
- 在Linux中,如何檢視檔案內容?列出幾種方法。Linux
- 在Linux中,如何建立、刪除和修改檔案?Linux
- 使用vim修改linux中的檔案Linux
- 3種在雲中利用開源的方法
- Linux7更改檔案開啟數Linux
- Linux中的檔案種類Linux
- 在ai studio中“持久化”修改python庫檔案的方法AI持久化Python
- 修改資料檔案的位置的兩種方法
- 在blender中開啟pmx檔案
- 在.net中讀寫config檔案的各種方法
- Java中計算整數中唯一數字數量的3種方法Java
- 在Linux中,linux核心引數如何修改?Linux
- Android 突破 DEX 檔案的 64K 方法數限制Android
- Linux-CentOS 最大開啟檔案數和程式數LinuxCentOS
- DBF檔案怎麼開啟?DBF檔案的開啟方法教程
- linux下3種檢測遠端埠是否開啟的方法Linux
- Linux檢視檔案大小的幾種方法Linux
- 在cmd中開啟指定檔案路徑
- 修改linux最大檔案控制程式碼數Linux
- Linux 中獲取檔案完整路徑的4種方法介紹Linux
- LINUX 使用批量刪除檔案的幾種方法Linux
- Win10系統中djvu檔案如何開啟_win10開啟djvu檔案的方法Win10
- ArcEngine 開啟AutoCAD檔案的幾種方法與讀取CAD資料的方法
- 限制 Apache日誌檔案大小的方法Apache
- linux 修改hosts檔案以及修改hostnameLinux
- MySQL 修改InnoDB重做日誌檔案的數量或大小MySql
- VMware vmdk檔案開啟方法
- 修改 Nginx 程式最大可開啟檔案數(worker processes和worker connections)Nginx
- 如何修改Mac檔案預設開啟方式?Mac
- 在 Linux 中如何刪除檔案中的空行Linux
- 怎麼刪除電腦中開啟的檔案記錄?刪除電腦中開啟的檔案記錄方法教程
- 在 Windows 中執行 Linux 命令的 4 種方法WindowsLinux
- 5種快速查詢容器檔案系統中檔案的方法
- 在 Linux 中如何移動檔案Linux