1、什么是文件句柄
百度百科:
在文件I/O中陶缺,要從一個文件讀取數(shù)據(jù)丰嘉,應用程序首先要調(diào)用操作系統(tǒng)函數(shù)并傳送文件名茄靠,并選一個到該文件的路徑來打開文件。該函數(shù)取回一個順序號屡久,即文件句柄(file handle)忆首,該文件句柄對于打開的文件是唯一的識別依據(jù)。要從文件中讀取一塊數(shù)據(jù)被环,應用程序需要調(diào)用函數(shù)ReadFile糙及,并將文件句柄在內(nèi)存中的地址和要拷貝的字節(jié)數(shù)傳送給操作系統(tǒng)。當完成任務后筛欢,再通過調(diào)用系統(tǒng)函數(shù)來關閉該文件浸锨。
2、linux下文件句柄
linux下文件句柄是有限制的版姑,默認并不會太高柱搜,一般都是1024。linux指令ulimit?-n可以查看文件句柄限制剥险。
3冯凹、相關命令
ulimit -a?? 用來顯示當前的各種用戶進程限制
ulimit -n 查看當前用戶默認的最大文件句柄數(shù)
lsof |wc -l ?查看所有進程的文件打開數(shù)
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more 查看當前進程打開了多少句柄數(shù),注意第一列是句柄數(shù),第二列是進程id
4宇姚、linux 硬限制和軟限制
硬限制是實際的限制,而軟限制夫凸,是warnning限制浑劳,只會做出warning,可以通過ulimit來設定這兩個參數(shù)夭拌,用root用戶執(zhí)行ulimit -HSn 4096(H指定了硬性大小魔熏,S指定了軟性大小,n表示設定單個進程最大的打開文件句柄數(shù)量)