日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux普通用户句柄数上限,linux系统下的用户文件句柄数限制

發布時間:2023/12/20 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux普通用户句柄数上限,linux系统下的用户文件句柄数限制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么要修改用戶打開的文件數

系統默認單個進程可以打開1024個文件,對于一些應用如tomcat、oracle等,運行時經常open成千上萬個文件,系統管理員需根據系統上運行的應用需求,修改系統文件數限制值。

系統中除了有限制單個進程打開的文件數,還有全部進程打開的文件總數限制。打開的文件總數限制是系統跟據硬件配置推算出來的,所以不同系統上,總數限制值可能不相同,系統管理員也可以手動修改總數限制。

在系統日志或終端上看到“resource temporarily unavaliable”報錯信息時,一般是出現了單個進程打開的文件數達最大值、系統中打開文件總數達最大值、用戶使用的進程(包括線程)數達最大值、文件系統滿這四種情況中的一種。

查看系統打開文件總數限制:

# cat /proc/sys/fs/file-max

1517258

# sysctl -a | grep fs.file-max

fs.file-max = 1517258

查看系統當前打開文件總數:(粗略計算,此值略低于實際值)

# lsof -n | wc -l

13077

臨時修改系統打開文件總數限制:(立即生效,重啟無效)

# echo 1600000 > /proc/sys/fs/file-max

永久修改系統打開文件最大值限制:

# echo fs.file-max = 1600000 >> /etc/sysctl.conf

# sysctl -w

(sysctl -w命令,使/etc/sysct.conf配置內容立即生效)

2. 修改用戶文件句柄數

(root用戶不受限制)

通過/etc/security/limits.conf修改用戶的資源限制,包括文件數限制。例如:

tiger soft nofile 4096 //設置tiger用戶每個進程可以打開4096個文件(軟限制)

tiger hard nofile 4096 //設置tiger用戶每個進程可以打開4096個文件(硬限制)

tiger - nofile 4096 //設置tiger用戶每個進程可以打開4096個文件(軟硬限制)

@sale - nofile 4096 //設置sale組用戶每個進程可以打開4096個文件(軟硬限制)

* - nofile 4096 //默認值,如果用戶與其他條目不匹配,則使用此設置

說明:

(1)如果軟限制和硬限制的值不相同,則較小的那個值生效。

(2)用戶可以自行調整限制值,但不可超過硬限制。

tiger soft nofile 4096

tiger hard nofile 8192

$ ulimit -n

4096

$ ulimit -n 8192

$ ulimit -n

8192

$ ulimit -n 10240

-bash: ulimit: open files: cannot modify limit: 不允許的操作

3. 修改限制后什么時候生效

修改/etc/security/limits.conf后,用戶開啟一個新的shell時生效。一般是用戶exit退出登錄,再次login。應用程序要使用更改后的配置,應用管理員需要在新shell中重啟應用。

有時候修改/etc/security/limits.conf后,配置沒有生效。很多都是在重新編譯安裝了ssh服務后出現的。原因只有一個,就是用戶會話是否使用了pam_limits.so模塊。

在/etc/pam.d目錄,存放了pam配置文件,常見如下:

login:用戶通過終端登錄時使用的pam配置文件

sshd:用戶通過ssh遠程登錄時使用的pam配置文件

su:用戶通過su切換用戶時使用的pam配置文件

sudo:用戶通過sudo,以其他用戶身份執行命令時的配置文件

limits.conf修改后不生效時,管理員應該首先確認用戶是以哪種方式打開會話的,然后在對應的pam配置文件中查找是否有“session required pam_limits.so”這項配置。如果沒有,則limits.conf配置不會生效。“session required pam_limits.so”配置經常放在password-auth和system-auth,然后被其他配置文件include進來。

# grep pam_limits.so /etc/pam.d/sshd

# grep include /etc/pam.d/sshd

auth include system-auth

account include system-auth

password include system-auth

session include system-auth

# grep pam_limits.so /etc/pam.d/system-auth

session required pam_limits.so

4. 是對用戶單個進程打開的文件數限制

(1)修改/etc/security/limits.conf,添加

tiger - nofile 100 //限制用戶每個進程打開的文件數為100

(2)寫一個程序,每秒打開一個文件(此處我引用一段朋友寫的C代碼)

$ vi file.c

#include

#include

#include

#include

main()

{

int fs;

int i=0;

char *filename;

while(i

fs=open(UTMP_FILE,O_RDONLY);

printf("open %d files,the filedescriptor is %d\n",i,fs);

i++;

sleep(1);

}

}

# gcc file.c –o file

# chmod 755 file

(3)多打開幾個終端,同時運行該程序

$ ./file

并行運行多個file程序,你會發現每個file程序都可以打開100個文件,然后報打開文件失敗。

共享同一進程號的所有線程,打開的文件總數不能超過單個進程限制值。

總結

以上是生活随笔為你收集整理的linux普通用户句柄数上限,linux系统下的用户文件句柄数限制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。